该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
交易编号
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 。
列中显示的事务 IDtransid
是 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
)。