MySQL精准打击之间隙锁( 二 )


 
(3)RR隔离级别+普通索引

MySQL精准打击之间隙锁

文章插图
RR隔离级别+普通索引
如上图所示,普通索引字段b=10给两条记录加了X锁,并且把聚集索引树的两条记录也加了X锁 。GAP锁的是b的范围(5,10),(10,正无穷) 。所以next-key Lock锁的是(5,10],(10,10],(10,正无穷] 。期间只要是b在next-key Lock的范围内就更新全部阻塞 。
举例:insert into test values(6,6,6,6)就会被阻塞,原因就是RR隔离级别的间隙锁锁住了记录之间的“间隙”,所以会阻塞
总结
  • 这次分享了RC隔离级别下出现幻读的情况,然后分析了为什么会出现幻读 。
  • InnoDB为了解决幻读,在RR下引入了GAP锁,和行锁组成next-key Lock
  • 分析了三种常见情况的加锁情况操作 。




推荐阅读