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
欄位會顯示 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
所識別)。