このページは機械翻訳したものです。
server_locks テーブルの構造は cluster_locks テーブルと似ており、後者のテーブルにある情報のサブセットを提供しますが、これはそれが存在する SQL ノード (MySQL サーバー) に固有のものです。 (cluster_locks テーブルには、クラスタ内のすべてのロックに関する情報が表示されます。) より正確には、server_locks には、現在の mysqld インスタンスに属するスレッドによってリクエストされたロックに関する情報が含まれ、server_operations へのコンパニオンテーブルとして機能します。 これは、ロックパターンを特定の MySQL ユーザーセッション、クエリーまたはユースケースと相関させる場合に役立ちます。
server_locks テーブルには、次のカラムがあります:
-
mysql_connection_idMySQL 接続 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 で識別される) 同じ行のロックのみを参照できます。