cluster_locks
表格提供有關目前鎖定請求,在 NDB 叢集中持有和等待 NDB
表格上的鎖定的資訊,且旨在作為 cluster_operations
的輔助表格。從 cluster_locks
表格取得的資訊,在調查停頓和死鎖時可能很有用。
cluster_locks
表格包含以下欄
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 的鎖定
注意事項
表格 ID (tableid
欄) 在內部指派,且與其他 ndbinfo
表格中使用的相同。它也會顯示在 ndb_show_tables 的輸出中。
交易 ID (transid
欄) 是 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
所識別。