一文彻底读懂MySQL事务的四大隔离级别( 六 )


RR 级别解决幻读分析因为RR是解决幻读问题的,怎么解决的呢,分析一波吧~
假设account表有4条数据,RR级别 。

  • 开启事务A,执行当前读,查询id>2的所有记录 。
  • 再开启事务B,插入id=5的一条数据 。可以发现,事务B执行插入操作时,阻塞了~因为事务A在执行select ... lock in share mode的时候,不仅在 id = 3,4 这2条记录上加了锁,而且在id > 2 这个范围上也加了间隙锁 。
因此,我们可以发现,RR隔离级别下,加锁的select, update, delete等语句,会使用间隙锁+ 临键锁,锁住索引记录之间的范围,避免范围间插入记录,以避免产生幻影行记录 。
 
作者:Jay_huaxiao
链接:https://juejin.im/post/5e800a1d6fb9a03c6568d06f




推荐阅读