mysql RR、RC隔离级别实现原理

事务隔离级别实现过程

快照读:所有select语句。

当前读:所有insert、update、delete,select for update(排它锁)、select ...share mode(共享锁)。

 并发事务快照读(ReadView可见性过程):

  1. 当前事务开启事务后,读到当前快照。
  2. 获取Read View (一致性视图)里的快照。
  3. 当前快照版本号和ReadView里的版本号进行对比,重新计算本次事务的快照,如果都不适合,从Undo log中历史版本对比,再次重新计算本次事务的快照。
  4. 返回当前读到数据给所有并发事务。

RR原理

  • 快照读

mvcc:并发事务只会读到读到当前事务里面首次生成的快照,直到这次事务结束为止才会重新计算快照。

  • 当前读

LBCC 使用了当前元素的临键锁(左开右闭) + 相邻间隙锁,直到当前事务结束才释放锁。

RR如何解决不可重复读?

LBCC保证并发事务的安全,一次只能一个事务去操作。

RR如何解决脏读?

LBCC保证并发事务的安全,并且规定了一次事务提交完之后另外一个事务才可以操作。

RR为什么没有办法保证幻读?

ReadView无法保证并发事务下读到数据的一致性,有可能多了也有可能少了。

LBCC的锁机制可以保证并发事务下写写的数据准确,即保证数据修改的安全性。

RC原理

  • 快照读

MVCC,并发事务下各自事务都会读到一个从新计算后的快照,无须等待事务结束。

  • 当前读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值