25.6.17.54 NDBinfo server_locks 表
server_locks
表的结构与cluster_locks
表相似,但它提供了后者中的一部分信息,但是这些信息是特定的当前 MySQL 服务器(mysqld 实例)所在的 SQL 节点上。(cluster_locks
表提供了整个集群中的所有锁信息。)更确切地说,server_locks
包含了当前 mysqld 实例中线程请求的锁信息,并且是server_operations
表的伴随表。这可能对关联锁定模式与特定的 MySQL 用户会话、查询或用例非常有用。
server_locks
表包含以下列:
-
mysql_connection_id
MySQL 连接 ID
-
node_id
报告节点的 ID
-
block_instance
报告 LDM 实例的 ID
-
tableid
包含该行的表 ID
-
fragmentid
包含锁定行的分片 ID
-
rowid
锁定的行 ID
-
transid
事务 ID
-
mode
锁定请求模式
-
状态
锁定状态
-
详细信息
是否是锁定队列中的第一个持有锁定的行锁定
-
操作类型
操作类型
-
等待或持有锁定毫秒数
等待或持有锁定的毫秒数
-
锁定对象ID
锁定对象的ID
-
等待锁定ID
等待锁定的ID
mysql_connection_id
列显示 MySQL 连接或线程 ID,如 SHOW PROCESSLIST
中所示。
block_instance
指的是内核块的实例。与块名称一起,这个数字可以用来在 threadblocks
表中查找给定的实例。
tableid
是 NDB
分配给表的ID;同一个 ID 在其他 ndbinfo
表中,以及在 ndb_show_tables 的输出中都使用。
transid
列中的事务 ID 是 NDB API 为请求或持有当前锁定的事务生成的标识符。
模式列显示锁定的模式,这总是其中之一:S
(共享锁)或X
(排他锁)。如果事务对某行拥有排他锁,那么该行上的所有其他锁都具有相同的事务ID。
状态列显示锁定的状态,其值总是其中之一:H
(持有)或W
(等待)。等待锁请求等待由不同事务持有的锁。
详细列指示是否这是受影响行的锁队列中的第一个持有锁,在这种情况下,它包含一个*
(星号字符);否则,这个列为空。这项信息可以用来帮助识别锁请求列表中的唯一条目。
操作列显示请求锁定的操作类型,这总是其中之一:READ
、INSERT
、UPDATE
、DELETE
、SCAN
或REFRESH
。
持续时间毫秒列显示这个锁请求已经等待或持有锁的毫秒数。这在授予等待请求时重置为0。
锁ID(lockid
列)是对该节点和块实例唯一的。
如果 lock_state
列的值为 W
,则该锁正在等待被授予,并且 waiting_for
列显示了该请求正在等待的锁对象的锁 ID。否则,waiting_for
为空。waiting_for
只能引用同一行上的锁(根据 node_id
、block_instance
、tableid
、fragmentid
和 rowid
标识)。