有时候我们既想锁住某条记录,又想阻止其他事务在该记录前边的间隙插入新记录,所以 InnoDB 就提出了一种称之为 Next-Key Locks 的锁,官方的类型名称为:LOCK_ORDINARY,我们也可以简称为 next-key 锁。next-key **锁的本质就是一个记录锁和一个 gap **锁的合体(对记录本身与记录前后的间隙都加锁)。
默认情况下,InnoDB 以 REPEATABLE READ 隔离级别运行。
在这种情况下,InnoDB 使用 Next-Key Locks 锁进行搜索和索引扫描,这可以防止幻读的发生。