MySQL的隔离级别

本文深入解析了数据库事务的四种隔离级别:读未提交、读已提交、可重复读及串行化,通过具体示例说明每种级别下数据读取的一致性与并发控制的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、 读未提交:

        mysql数据库此时有一张表数据为:id=1,name="张三"; 事务B 将id=1的数据,name改成了"李四",但是事务并没有提交;但是事务A却可以读取到mysql中id=1的数据name="李四";

2、读已提交:(不可重复读)

事务B将id=1,name改为"李四",此时未提交事务;事务A第一次查询,查询到id=1的name="张三";此时事务B将事务提交;mysql数据库中,id=1,name由"张三"改成了name="李四";事务A第二次查询,发现id=1的name="李四";

3、可重复读

        事务B将id=1,name改为"李四",此时未提交事务;事务A第一次查询,查询到id=1的name="张三";此时事务B将事务提交;mysql数据库中,id=1,name由"张三"改成了name="李四";事务A第二次查询,读到的id=1,name还是"张三";事务B在事务运行过程中数据读取的永远是事务开启时候的name="张三",是一样的。

4、串行化:解决幻读问题

  4.1幻读

       事务A查询到数据只有一条,id=1,name="张三";事务B插入一条数据,id=2,name="李四",事务提交;此时事务A第二次查询,查询到了两条数据,id=1,name="张三"、id=2,name="李四";此时事务A就仿佛看到了幻觉,第一次跟第二次查询,不一样;

4.2 串行化:

      事务A查询到数据只有一条,id=1,name="张三";在事务A执行期间,事务B不能执行;事务A第二次查询,仍然查询到数据只有一条,id=1,name="张三";事务A提交;此时事务B可以执行了,事务B插入一条数据,id=2,name="李四",提交事务B;mysql表中此时有了两条数据,id=1,name="张三"、id=2,name="李四";

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值