该cluster_lockstable 提供有关当前锁定请求的信息,该请求持有和等待
NDBNDB Cluster 中表的锁定,并且旨在作为
cluster_operations. 从cluster_locks
表中获取的信息可能有助于调查停顿和死锁。
该cluster_locks表包含以下列:
node_id上报节点ID
block_instance上报LDM实例ID
tableid包含该行的表的 ID
fragmentid包含锁定行的片段的 ID
rowid锁定行的ID
transid交易编号
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(holding) 或
W(waiting) 之一。等待锁请求等待不同事务持有的锁。
当该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。
该cluster_locks表是在 NDB 7.5.3 中添加的。