ndbinfo server_locks表
该server_locks表的结构类似于cluster_locks表,并提供了在后一个表中找到的信息的子集,但特定于该表所驻留的SQL节点(MySQL服务器)。(该cluster_locks表提供了有关集群中所有锁的信息。)更准确地说,它server_locks包含有关属于当前mysqld实例的线程所请求的锁的信息,并用作的伴随表server_operations。这对于将锁定模式与特定的MySQL用户会话,查询或用例相关联可能很有用。
下表提供有关表中各列的信息server_locks。该表为每一列显示名称,数据类型和简要说明。可以在表格后面的注释中找到其他信息。
server_locks表的列
| 栏名 | 类型 | 描述 |
|---|---|---|
| mysql_connection_id | 整数 | MySQL连接ID |
| node_id | 整数 | 报告节点的ID |
| block_instance | 整数 | 报告LDM实例的ID |
| tableid | 整数 | 包含该行的表的ID |
| fragmentid | 整数 | 包含锁定行的片段的ID |
| rowid | 整数 | 锁定行的ID |
| transid | 整数 | 交易编号 |
| mode | string | 锁定请求模式 |
| state | string | 锁定状态 |
| detail | string | 这是否是第一个在行锁队列中持有锁 |
| op | string | 操作类型 |
| 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)。
