image.png
    image.png
    会话1加锁变化过程如下:

    1. 加锁的基本单位是 next-key lock,因此主键索引 id 的加锁范围是(8, 16];
    2. 但是由于查询记录不存在,next-key lock 退化成间隙锁,因此最终加锁的范围是 (8,16)。

    所以,会话 2 要往这个间隙里面插入 id=9 的记录会被锁住,但是会话 3 修改 id =16 是可以正常执行的,因为 id = 16 这条记录并没有加锁。