MySql的事务是什么?什么是脏读?幻读?不可重复读?

本文深入探讨了数据库事务的概念,包括其四大特性:原子性、一致性、隔离性和持久性。详细阐述了事务的操作流程,并介绍了MySQL的四种隔离级别及其可能引发的问题,如脏读、不可重复读和幻读。通过实例解析了不同隔离级别下这些问题的出现情况,帮助读者理解事务管理在数据库操作中的重要性。
摘要由CSDN通过智能技术生成

目录

一、什么是事务?

二、事务的原则/特性

三、事务的操作步骤

四、事物的隔离级别

五、事务隔离级别存在的问题

六、事物的隔离级别分别可能存在如下问题

扩展:


一、什么是事务?

事务就是将一组SQL语句放在同一批次内执行,如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行。

二、事务的原则/特性

1.原则性(事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做

2.一致性 (是在事务的开始之前和事务结束以后)

3.隔离性 (事物的执行互不干扰)

4.持久性(事务结束后,数据持久的保存在数据库中)

三、事务的操作步骤

1.关闭自动提交

set autocommit = 0;

2.开启一个事务

start transaction;

3.一组SQL语句

4.关闭事务(结束事务)

        1.提交

        commit;

        2.回滚

        rollback;

5.开启自动提交

set atuocommit = 1;

四、事物的隔离级别

MySQL的四种隔离级别

        Read Uncommitted(读取未提交)

        Read Committed(读提交/不可重复读)

        Repeatable Read(可重复读)(MySQL默认的隔离级别)

        Serializable(可串行化)

五、事务隔离级别存在的问题

1.跟新丢失:当两个事务选择同一行,然后更新数据,由于每个事务都不知道其他事务的存在,就会发生丢失更新的问题,(你我同时读取同一行数据,进行修改,你commit之后我也commit,那么我的结果将会覆盖掉你的结果)。

2.脏读(Drity Read):某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。

3.不可重复读(Non-repeatable read):在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事务更新的原有的数据。

4.幻读(Phantom Read):在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列(Row)数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的。

六、事物的隔离级别分别可能存在如下问题

事务隔离级别脏读不可重复读幻读
读未提交( Read Uncommitted)
不可重复读(Read Committed)
可重复读(  Repeatable Read)
可串行化(Serializable)

扩展:

查看隔离级别:

select @@global.transaction_isolation,@@transaction_isolation;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值