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
欄位顯示 SHOW PROCESSLIST
顯示的 MySQL 連線或執行緒 ID。
block_instance
指的是核心區塊的執行個體。連同區塊名稱,此數字可用於在 threadblocks
表格中查找指定的執行個體。
tableid
由 NDB
指派給表格;相同的 ID 用於其他 ndbinfo
表格中的此表格,以及 ndb_show_tables 的輸出。
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
識別)。