25.6.17.7 NDB Cluster 锁表
cluster_locks
表提供了当前锁请求持有和等待锁的信息,用于 NDB 集群中的 NDB
表,并且是cluster_operations
表的伴侣表。从 cluster_locks
表中获取的信息可能有助于调查停滞和死锁。
cluster_locks
表包含以下列:
-
node_id
报告节点的 ID
-
block_instance
报告 LDM 实例的 ID
-
tableid
包含该行的表 ID
-
fragmentid
包含锁定的行 fragment 的 ID
-
rowid
锁定的行 ID
-
transid
事务 ID
-
mode
锁请求模式
-
state
锁状态
-
detail
是否是该行锁队列中的第一个持有锁
-
op
操作类型
-
duration_millis
等待或持有锁的毫秒数
-
lock_num
锁对象的 ID
-
waiting_for
等待锁定ID
表ID(tableid
列)是内部分配的,同样用于其他 ndbinfo
表。它也在 ndb_show_tables 的输出中显示。
事务ID(transid
列)是 NDB API 为请求或持有当前锁定的事务生成的标识符。
mode
列显示锁定模式;这总是其中之一:S
(表示共享锁)或 X
(独占锁)。如果事务在给定的行上持有独占锁,则该行上的所有其他锁都具有相同的事务ID。
state
列显示锁定状态。其值总是其中之一:H
(保持)或 W
(等待)。等待锁定的请求等待由不同事务持有的锁。
当 detail
列包含一个星号(*
)时,这意味着该锁是受影响行的锁定队列中的第一个保持锁;否则,该列为空。这项信息可以用来帮助识别锁定的唯一条目列表。
op
列显示请求锁定的操作类型。总是其中之一:READ
、INSERT
、UPDATE
、DELETE
、SCAN
或 REFRESH
。
duration_millis
列显示了这个锁请求等待或持有锁的毫秒数。锁被授予时,这个值将重置为 0。
锁 ID(lockid
列)是唯一的,仅对该节点和块实例有效。
锁状态在 lock_ state
列中显示;如果这个值为 W
,则锁正在等待被授予,并且 waiting_for
列显示了该请求等待的锁对象的锁 ID。否则,waiting_for
列为空。waiting_for
只能引用同一行上的锁,根据 node_id
、block_instance
、tableid
、fragmentid
和 rowid
来标识该行。