You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Next-key lock的验证:主键范围查询的锁机制确认

主键范围查询的Next-Key Lock分析

针对你的查询语句:

SELECT * FROM table WHERE pk > 99;

(以下分析基于InnoDB默认的可重复读(RR)隔离级别)

  • 核心规则:主键属于唯一索引,InnoDB对唯一索引的范围查询仍会触发Next-Key Lock(记录锁+间隙锁的组合),同时会针对唯一特性做优化
  • 具体锁范围:
    • 记录锁:锁定表中所有pk > 99的主键记录,阻止其他事务对这些记录执行修改、删除操作
    • 间隙锁:覆盖以下区间:
      • (99, 表中第一个大于99的主键值)的间隙
      • 所有后续主键记录之间的间隙(比如表中有pk=100、105,则包含(100,105))
      • 最后一条主键记录到+∞的间隙
        这些间隙锁会阻止其他事务在对应区间插入新的主键值(比如插入pk=102、115等)
  • 极端情况:若表中无任何pk > 99的记录,间隙锁会直接锁定(99, +∞)的完整区间,禁止插入所有pk大于99的新记录

示意图验证参考

如果你的示意图符合以下判断标准,即为正确:

  • 未对pk <= 99的记录或其间隙加锁
  • 包含了(99, 首个大于99的pk值)的间隙锁
  • 包含了所有后续pk记录间的间隙,以及最后一条pk到+∞的间隙锁
  • 对所有pk > 99的记录标注了记录锁

若示意图不符合以上任意一点,即为错误。

内容的提问来源于stack exchange,提问作者user19481364

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:10:20