cluster_locks
テーブルは NDB Cluster 内の 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
で識別される同じ行のロックのみを参照できます。