为什么MySQL innodb使用下一键锁而不是记录锁?

时间:2015-01-15 16:00:17

标签: mysql

MySQL innodb's document中,在默认事务隔离级别“repeatable-read”中,MySQL会在处理“update”和“delete”语句时发出下一键锁定。

我很困惑为什么它不会使用记录锁而不是下一键锁,因为下一键锁的优点是它可以避免“幻读”,但在隔离级别允许“可重复读取”。

1 个答案:

答案 0 :(得分:0)

从您关联的页面

  

InnoDB不记得确切的WHERE条件,但只知道哪个索引范围   扫描。锁通常是下键锁,也阻止插入“间隙”   在记录之前。

因此,下一键锁定也会阻止插入所选范围内的记录锁定不会。