0
在MySQL innodb's document中,它表示默认事务隔离级别为“可重复读”,MySQL在处理“update”和“delete”语句时将发出下一个键锁。为什么MySQL innodb使用下一个键锁而不是记录锁?
我很困惑,为什么它不会使用记录锁而不是下一个键锁,因为下一个键锁的好处是可以避免“幻像读取”,但它在隔离级别允许“重复读取” 。
在MySQL innodb's document中,它表示默认事务隔离级别为“可重复读”,MySQL在处理“update”和“delete”语句时将发出下一个键锁。为什么MySQL innodb使用下一个键锁而不是记录锁?
我很困惑,为什么它不会使用记录锁而不是下一个键锁,因为下一个键锁的好处是可以避免“幻像读取”,但它在隔离级别允许“重复读取” 。
从页面链接你
的InnoDB不记得确切的WHERE条件,但是仅知道哪个索引范围被扫描 。这些锁通常是下一个键锁,它也会阻止插入到记录之前的“间隙” 中。
因此,下一个键锁也阻止插入选定的范围,记录锁不会。