INNODB_TRX
テーブルには、InnoDB
内で現在実行されているすべてのトランザクションに関する情報が表示されます。これには、トランザクションがロックを待機しているかどうか、トランザクションの開始時、トランザクションが実行されている SQL ステートメント (ある場合) などが含まれます。
使用法については、セクション15.15.2.1「InnoDB トランザクションの使用および情報のロック」を参照してください。
INNODB_TRX
テーブルには、次のカラムがあります:
-
TRX_ID
InnoDB
内部の一意のトランザクション ID 番号。 これらの ID は、読取り専用および非ロックのトランザクションに対しては作成されません。 詳細は、セクション8.5.3「InnoDB の読み取り専用トランザクションの最適化」を参照してください。 -
TRX_WEIGHT
トランザクションの重み。これは、トランザクションが変更した行の数とロックした行の数を反映したものです (ただし必ずしも正確な数ではありません)。 デッドロックを解決するために、
InnoDB
はロールバックする「「被害者」」として最小の重みを持つトランザクションを選択します。 非トランザクションテーブルを変更したトランザクションは、変更およびロックされた行の数に関係なく、他のトランザクションよりも重いとみなされます。 -
TRX_STATE
トランザクションの実行状態。 許可される値は、
RUNNING
,LOCK WAIT
,ROLLING BACK
およびCOMMITTING
です。 -
TRX_STARTED
トランザクション開始時間。
-
TRX_REQUESTED_LOCK_ID
TRX_STATE
がLOCK WAIT
の場合は、トランザクションが現在待機しているロックの ID。それ以外の場合はNULL
。 ロックの詳細を取得するには、このカラムをパフォーマンススキーマdata_locks
テーブルのENGINE_LOCK_ID
カラムと結合します。 -
TRX_WAIT_STARTED
TRX_STATE
がLOCK WAIT
の場合、トランザクションがロックの待機を開始した時刻。それ以外の場合はNULL
。 -
TRX_MYSQL_THREAD_ID
MySQL スレッド ID。 スレッドの詳細を取得するには、このカラムを
INFORMATION_SCHEMA
PROCESSLIST
テーブルのID
カラムと結合しますが、セクション15.15.2.3「InnoDB トランザクションおよびロック情報の永続性と一貫性」 を参照してください。 -
TRX_QUERY
トランザクションによって実行されている SQL ステートメント。
-
TRX_OPERATION_STATE
トランザクションの現在の操作 (存在する場合)。それ以外の場合は
NULL
。 -
TRX_TABLES_IN_USE
このトランザクションの現在の SQL ステートメントを処理しているときに使用される
InnoDB
テーブルの数。 -
TRX_TABLES_LOCKED
現在の SQL ステートメントで行ロックが有効になっている
InnoDB
テーブルの数。 (これらはテーブルロックではなく行ロックなので、一部の行がロックされているかどうかにかかわらず、通常、複数のトランザクションによるテーブルからの読み取りおよびテーブルへの書き込みを実行できます。) -
TRX_LOCK_STRUCTS
トランザクションで予約されたロックの数。
-
TRX_LOCK_MEMORY_BYTES
メモリー内のこのトランザクションのロック構造にかかった合計サイズ。
-
TRX_ROWS_LOCKED
このトランザクションによってロックされたおおよその数または行数。 この値には、物理的には存在するがトランザクションから認識できない削除マークが付けられた行が含まれる場合があります。
-
TRX_ROWS_MODIFIED
このトランザクションで変更および挿入された行の数。
-
TRX_CONCURRENCY_TICKETS
innodb_concurrency_tickets
システム変数で指定された、スワップアウトされる前に現在のトランザクションが実行できる作業量を示す値。 -
TRX_ISOLATION_LEVEL
現在のトランザクションの分離レベル。
-
TRX_UNIQUE_CHECKS
現在のトランザクションで一意チェックがオンになっているか、オフになっているか。 たとえば、バルクデータロード中にオフになる場合があります。
-
TRX_FOREIGN_KEY_CHECKS
現在のトランザクションで外部キーチェックがオンになっているか、オフになっているか。 たとえば、バルクデータロード中にオフになる場合があります。
-
TRX_LAST_FOREIGN_KEY_ERROR
最後の外部キーエラーの詳細なエラーメッセージ (存在する場合)。それ以外の場合は
NULL
。 -
TRX_ADAPTIVE_HASH_LATCHED
適応ハッシュインデックスが現在のトランザクションによってロックされているかどうか。 適応型ハッシュインデックス検索システムがパーティション化されている場合、単一のトランザクションは適応型ハッシュインデックス全体をロックしません。 適応型ハッシュインデックスパーティション化は、デフォルトで 8 に設定されている
innodb_adaptive_hash_index_parts
によって制御されます。 -
TRX_ADAPTIVE_HASH_TIMEOUT
アダプティブハッシュインデックスの検索ラッチをすぐに破棄するか、MySQL からの呼び出し全体で保持するか。 適応型ハッシュインデックスの競合がない場合、この値はゼロのままで、ステートメントは終了するまでラッチを予約します。 競合の間、ゼロまでカウントダウンし、ステートメントは各行ルックアップの直後にラッチを解放します。 適応ハッシュインデックス検索システムがパーティション化されている場合 (
innodb_adaptive_hash_index_parts
によって制御されます)、値は 0 のままです。 -
TRX_IS_READ_ONLY
値 1 は、トランザクションが読取り専用であることを示します。
-
TRX_AUTOCOMMIT_NON_LOCKING
値 1 は、トランザクションが
FOR UPDATE
句またはLOCK IN SHARED MODE
句を使用しないSELECT
ステートメントであり、トランザクションにこのステートメントのみが含まれるようにautocommit
を有効にして実行されていることを示します。 このカラムとTRX_IS_READ_ONLY
がどちらも 1 である場合、InnoDB
は、テーブルデータを変更するトランザクションと関連付けられたオーバーヘッドを軽減するように、トランザクションを最適化します。 -
TRX_SCHEDULE_WEIGHT
ロックを待機しているトランザクションに競合対応トランザクションスケジューリング (CATS) アルゴリズムによって割り当てられるトランザクションスケジュールの重み。 この値は、他のトランザクションの値に対して相対的です。 値が大きいほど重みが大きくなります。 値は、
TRX_STATE
カラムでレポートされるLOCK WAIT
状態のトランザクションに対してのみ計算されます。 ロックを待機していないトランザクションについては、NULL 値が報告されます。TRX_SCHEDULE_WEIGHT
の値は、TRX_WEIGHT
の値とは異なります。この値は、目的に応じて異なるアルゴリズムによって計算されます。
例
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX\G
*************************** 1. row ***************************
trx_id: 1510
trx_state: RUNNING
trx_started: 2014-11-19 13:24:40
trx_requested_lock_id: NULL
trx_wait_started: NULL
trx_weight: 586739
trx_mysql_thread_id: 2
trx_query: DELETE FROM employees.salaries WHERE salary > 65000
trx_operation_state: updating or deleting
trx_tables_in_use: 1
trx_tables_locked: 1
trx_lock_structs: 3003
trx_lock_memory_bytes: 450768
trx_rows_locked: 1407513
trx_rows_modified: 583736
trx_concurrency_tickets: 0
trx_isolation_level: REPEATABLE READ
trx_unique_checks: 1
trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
trx_adaptive_hash_latched: 0
trx_adaptive_hash_timeout: 10000
trx_is_read_only: 0
trx_autocommit_non_locking: 0
trx_schedule_weight: NULL
メモ
このテーブルを使用すると、負荷の大きな同時ロードの時間中に生じるパフォーマンスの問題の診断に役立ちます。 その内容は、セクション15.15.2.3「InnoDB トランザクションおよびロック情報の永続性と一貫性」で説明しているように更新されます。
このテーブルをクエリーするには
PROCESS
権限が必要です。INFORMATION_SCHEMA
COLUMNS
テーブルまたはSHOW COLUMNS
ステートメントを使用して、データ型やデフォルト値など、このテーブルのカラムに関する追加情報を表示します。