https://blog.csdn.net/yzx3105/article/details/129728659

image.png

测试

1. 唯一索引的等值查询

查询的记录存在:在用「唯一索引进行等值查询」时,next-key lock 会退化成「记录锁」

查询的记录不存在:在用「唯一索引进行等值查询」时,next-key lock 会退化成「间隙锁

唯一索引等值查询:记录存在,临键锁退为行锁

image.png

事务A加锁变化过程:

1.查询 id=8的数据,加锁的基本单位是 next-key lock,因此事务A的加锁范围是 id (5, 8];

2.唯一索引(包括主键索引) 进行等值查询,且查询的记录存在,所以next-key lock 退化成记录锁,最终加锁的范围就是 id = 8 这一行。

结论:

由于id=8退化为行锁,因此事务B修改 id=8的这条记录失败,而事务C插入id=6能够成功