代码之家  ›  专栏  ›  技术社区  ›  GProst

为什么下一个钥匙锁是这样叫的?

  •  0
  • GProst  · 技术社区  · 7 年前

    据我所知(基于 official docs ),下一个键锁是一个索引记录锁+该索引记录之前的间隙锁(前一个间隙)。

    所以我很好奇为什么它叫NEXT Key lock?下一个是什么意思?

    0 回复  |  直到 7 年前
        1
  •  5
  •   Bill Karwin    7 年前

    在这种情况下, 钥匙

    下一个密钥锁是通过索引搜索或扫描获得的。

    UPDATE mytable WHERE id > 18;
    

    假设索引10、11、13和20中实际上有值(就像手册中的例子一样)。上面显示的更新将锁定20的条目,并在20之前锁定间距,因为这是索引扫描。

    然后,您的会话尝试插入间隙:

    INSERT INTO mytable (id) VALUES (19);
    

    这样想:您无法在19上获得锁,因为其他一些会话已经锁定了包含您要插入的值19和20的间隙,即 下一个键