【Next-Key Locks】
Next-Key Locks是MySQL的InnoDB存储引擎的一种锁实现。
MVCC不能解决幻影读问题,Next-Key Locks就是为了解决这个问题而存在的。在可重复度隔离级别下,使用MVCC + Next-Key Locks可以解决幻读问题。
Record Locks:
锁定一个记录上的索引,而不是记录本身。
如果表没有设置索引,InnoDB会自动在主键上创建隐藏的聚簇索引,因此Record Locks依然可以使用
Gap Locks:
锁定索引之间的间隙,但是不包括索引本身。例如当一个事务执行以下语句,其他事务就不能在t.c中插入15.
Next-Key Locks:
它是Record Locks和Gap Locks的结合,不仅锁定一个记录上的索引,也锁定索引之间的间隙。它锁定一个前开后闭区间,例如一个索引包含以下值:10,11,13 and 20,那么就是锁定以下区间: