Documentation Home

21.6.15.33 ndbinfo server_locks 表

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列显示请求锁定的操作类型。这始终是值 READINSERTUPDATEDELETESCAN或之一REFRESH

duration_millis列显示此锁定请求已等待或持有锁定的毫秒数。当为等待请求授予锁定时,这将重置为 0。

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

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

server_locks表是在 NDB 7.5.3 中添加的。