目标:什么是Next-Key Lock,Next-Key Lock的加锁逻辑
什么是Next-Key锁
Next-Key锁是间隙锁 + 行锁(记录锁)的组合
事务隔离级别分别为可重复读(REPEATABLE READ)和串行化(SERIALIZABLE)下,InnoDB才会使用间隙锁。
间隙锁是一种锁定记录之间的“间隙”的锁。它并不锁定任何真实存在的记录,而是锁定一个范围,以防止其他事务在这个范围内插入新的记录。间隙锁的主要目的是为了防止幻读问题。
Next-Key锁的加锁逻辑
- 加锁时以Next-Key为基本单位
- 查找过程中扫描过的范围才加锁
- 唯一索引等值查询,没有间隙锁,只加行锁
- 索引等值查询最右一个扫描到的不满足条件值的不加行锁
- 索引覆盖且只加S锁时,不锁主键索引
Comments NOTHING