next-key lock
next-key lock是MVCC多版本并发控制的锁机制,目的是在事务隔离级别REPEATABLE READ下防止幻读。
- 行锁+间隙锁=next-key lock
- 会锁住数据本身和他之前的数据之间的间隙。
假设 user 表中有以下记录,id 是主键(唯一索引):
id:1,3,7
当查询id=7时,只会发生记录锁。
当查询id=5时,由于5不存在,为了防止幻读,会锁住(3,7)之间的间隙,就是一个next-key lock。
next-key lock是MVCC多版本并发控制的锁机制,目的是在事务隔离级别REPEATABLE READ下防止幻读。
假设 user 表中有以下记录,id 是主键(唯一索引):
id:1,3,7
当查询id=7时,只会发生记录锁。
当查询id=5时,由于5不存在,为了防止幻读,会锁住(3,7)之间的间隙,就是一个next-key lock。