事务的隔离级别

一、读未提交

二、读已提交

三、可重复读

四、串行化

1、读未提交:四大隔离级别中最低的隔离级别,事务可以读取到其他事务未提交的数据。

事务A读取到了事务B未提交的数据,进行继续的业务逻辑。在这种情况下,事务B可能在之后会对数据进行再次的修改,导致事务A读取到脏数据。

2、读已提交:只能读取事务已经提交过的数据,能避免脏读,但是不能避免不可重复读和幻读。

事务A在开始前读取到事务B提交之后的数据。而在事务A拿到数据进行业务逻辑,事务B再次对这个数据进行修改并且进行了提交,会造成俩次读取的数据不一致,带来不可重复读。若事务B对事务A的读取的范围数据进行了新增或者删除,事务A会产生幻读

幻读的原因:同一事务俩次读取的事务行数不一致等情况。

3、可重复读:Mysql的默认隔离级别,能解决读已提交的不可重复读,在每一次事务开始都会进行一次快照,在这个事务的范围内都会根据事务开始的快照进行,保证在当前的事务内,读取的数据一致。在这种事务的隔离级别下,如果事务B将事务A读取到的数据进行修改,对事务A来说也是没有影响的。但是在可重复读的隔离级别下也会产生幻读。

在可重复读的情况下,事务A每次读取的数据理论上是一致的,但如果事务B插入了一条数据,事务A其实应该是不会感知到的,只会读取到第一次的快照。但是如果事务A执行和事务B一样的新增操作,可能会插入不成功,因为事务B已经将数据入库,此时就会产生幻读,其实在这种情况下,幻读也不是严格意义上行数不一致,行数不一致只是幻读发生的场景之一

4、串行化:牺牲性能带来数据一致性,在同一时刻,只能读读,对于读写,写写来说是不被允许的。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天你学习了ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值