ndbinfo server_locks表
该server_locks
表的结构类似于cluster_locks
表,并提供了在后一个表中找到的信息的子集,但特定于该表所驻留的SQL节点(MySQL服务器)。(该cluster_locks
表提供了有关集群中所有锁的信息。)更准确地说,它server_locks
包含有关属于当前mysqld实例的线程所请求的锁的信息,并用作的伴随表server_operations
。这对于将锁定模式与特定的MySQL用户会话,查询或用例相关联可能很有用。
下表提供有关表中各列的信息server_locks
。该表为每一列显示名称,数据类型和简要说明。可以在表格后面的注释中找到其他信息。
server_locks表的列
栏名 | 类型 | 描述 |
---|---|---|
mysql_connection_id | 整数 | MySQL连接ID |
node_id | 整数 | 报告节点的ID |
block_instance | 整数 | 报告LDM实例的ID |
tableid | 整数 | 包含该行的表的ID |
fragmentid | 整数 | 包含锁定行的片段的ID |
rowid | 整数 | 锁定行的ID |
transid | 整数 | 交易编号 |
mode | string | 锁定请求模式 |
state | string | 锁定状态 |
detail | string | 这是否是第一个在行锁队列中持有锁 |
op | string | 操作类型 |
duration_millis | 整数 | 等待或保持锁定所花费的毫秒数 |
lock_num | 整数 | 锁对象的ID |
waiting_for | 整数 | 等待具有此ID的锁定 |
该mysql_connection_id
列显示MySQL连接或线程ID,如所示SHOW PROCESSLIST
。
block_instance
指内核块的实例。连同块名一起,该数字可用于在threadblocks
表中查找给定的实例。
由tableid
分配给表NDB
;在其他ndbinfo
表以及ndb_show_tables的输出中,此表使用相同的ID 。
transid
列中显示的交易ID 是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
)。