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 所識別。