server_locks
表在结构上类似于 cluster_locks
表,并提供后一个表中发现的信息的子集,但这些信息特定于它所在的 SQL 节点(MySQL 服务器)。(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
锁请求模式
state
锁状态
detail
这是否是在行锁队列中第一个持有锁的锁
op
操作类型
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
标识)。