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

行级锁(row-level locks)与索引记录锁(index record locks)的区别是什么?

行级锁与索引记录锁的区别

1. 概念层级不同

  • 行级锁是InnoDB锁机制中按锁粒度划分的一个类别,指针对数据表单行数据的锁定,是一个宽泛的概念。
  • 索引记录锁是行级锁的具体实现形式,是InnoDB用来实现行级锁定的核心手段。

2. 锁定对象有差异

  • 行级锁的锁定目标逻辑上是数据表中的整行数据,关注的是数据行本身。
  • 索引记录锁直接锁定的是索引条目:哪怕表没有显式创建索引,InnoDB也会生成隐藏的聚簇索引,通过锁定这些索引条目来间接锁定对应的行数据。

3. 实现逻辑的区别

  • 行级锁只是定义了锁作用的范围(单行),不涉及具体的锁定方式。
  • 索引记录锁是落地的锁定逻辑:当执行SELECT ... FOR UPDATE这类带锁定的查询时,InnoDB会根据查询条件定位到对应的索引记录,对这些索引条目加锁,以此阻止其他事务对对应行进行插入、更新或删除操作。

参考官方描述:

记录锁是对一条索引记录(index record)的锁。例如,执行SELECT c1 FROM t WHERE c1 = 10 FOR UPDATE;会阻止其他事务插入、更新或删除t表中c1值为10的行。
即使表没有定义任何索引,记录锁也始终锁定
索引记录(index record)
。这种情况下,InnoDB会创建一个隐藏的聚簇索引,并使用该索引进行记录锁定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:40:25