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
によってテーブルに割り当てられます。ndb_show_tables の出力と同様に、他の ndbinfo
テーブルのこのテーブルにも同じ 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
で識別される) 同じ行のロックのみを参照できます。