21.5.14.33 ndbinfo server_lockstable

server_lockstable 的结构类似于cluster_lockstable,并提供在后者 table 中找到的信息的子集,但特定于它所驻留的 SQL 节点(MySQL 服务器)。 (cluster_lockstable 提供了有关群集中所有锁的信息.)更准确地说,server_locks包含了有关属于当前mysqld实例的线程所请求的锁的信息,并用作server_operations的伴随 table。这对于将锁定模式与特定的 MySQL 用户会话,查询或用例相关联可能很有用。

server_lockstable 包含以下列:

  • mysql_connection_id

MySQL 连接 ID

  • node_id

报告节点的 ID

  • block_instance

报告 LDM 实例的 ID

  • tableid

包含该行的 table 的 ID

  • fragmentid

包含锁定行的片段的 ID

  • rowid

锁定行的 ID

  • transid

Transaction ID

  • mode

锁定请求模式

  • state

Lock state

  • detail

这是否是第一个在行锁队列中持有锁

  • op

Operation type

  • duration_millis

await 或保持锁定所花费的毫秒数

  • lock_num

锁对象的 ID

  • waiting_for

await 具有此 ID 的锁定

Notes

mysql_connection_id列显示 MySQL 连接或线程 ID,如SHOW PROCESSLIST所示。

block_instance指内核块的实例。连同块名一起,该数字可用于在threadblockstable 中查找给定的实例。

tableidNDB分配给 table;在其他ndbinfotable 以及ndb_show_tables的输出中,此 table 使用相同的 ID。

transid列中显示的 TransactionID 是 NDB API 为请求或持有当前锁的 Transaction 生成的标识符。

mode列显示锁定模式,该模式始终是S(共享锁定)或X(独占锁定)之一。如果事务在给定行上具有排他锁,则该行上的所有其他锁都具有相同的事务 ID。

state列显示锁定状态。它的值始终是H(保持)或W(await)之一。await 锁请求 await 另一个事务持有的锁。

detail列指示此锁是否是受影响的行的锁队列中的第一个保持锁,在这种情况下,它包含*(星号字符);否则,此列为空。此信息可用于帮助识别锁定请求列 table 中的唯一条目。

op列显示请求锁定的操作类型。这始终是值READINSERTUPDATEDELETESCANREFRESH之一。

duration_millis列显示此锁定请求已 await 或持有锁定的毫秒数。当为 await 的请求授予锁时,此位重置为 0.

锁 ID(lockid列)对此节点和块实例唯一。

如果lock_state列的值为W,则 await 授予此锁,而waiting_for列显示此请求正在 await 的锁对象的锁 ID。否则,waiting_for为空。 waiting_for只能引用同一行上的锁(由node_idblock_instancetableidfragmentidrowid标识)。

server_lockstable 已添加到 NDB 7.5.3 中。