【问题标题】:How is the index locked during transaction updates?事务更新期间如何锁定索引?
【发布时间】:2014-11-22 08:55:30
【问题描述】:

我对 InnoDB 中的锁定感到困惑。
我知道它锁定在行级别,但据我所知,它也锁定了索引。 但是索引究竟是如何锁定的呢?
例如。对于聚集索引:是持有锁定行的叶子还是该叶子的所有祖先。到哪一级?

【问题讨论】:

  • 您是出于好奇,还是遇到了导致这个问题的实际问题?
  • @RandomSeed:我没有实际问题。但我有兴趣了解这一点

标签: mysql sql transactions indexing b-tree


【解决方案1】:

(概念上的)记录级锁实际上是索引记录上的(物理)锁。

Reference(强调我的):

InnoDB 有几种类型的记录级锁,包括记录锁、间隙锁和下一个键锁。 (...)

  • 记录锁:这是索引记录上的锁
  • 间隙锁:这是对索引记录之间的间隙的锁
  • 下一个键锁:这是索引记录上的锁索引记录之前的间隙上的间隙锁的组合。

因此,关于行级锁的说法实际上是指索引锁。

我从未见过关于实现细节的底层信息,源代码中的血腥细节绝杀,恐怕......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 2020-04-23
    • 2023-02-15
    • 2022-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多