data_lock_waits
テーブルには、data_locks
テーブルのどのデータロックリクエストが data_locks
テーブルのどのデータロックによってブロックされているかを示す多対多関係が実装されています。 data_locks
で保持されているロックは、ロックリクエストがブロックされている場合にのみ data_lock_waits
に表示されます。
この情報を使用すると、セッション間のデータロックの依存性を理解できます。 テーブルには、セッションまたはトランザクションが待機しているロックだけでなく、そのロックを現在保持しているセッションまたはトランザクションが表示されます。
データロック待機情報の例:
mysql> SELECT * FROM performance_schema.data_lock_waits\G
*************************** 1. row ***************************
ENGINE: INNODB
REQUESTING_ENGINE_LOCK_ID: 140211201964816:2:4:2:140211086465800
REQUESTING_ENGINE_TRANSACTION_ID: 1555
REQUESTING_THREAD_ID: 47
REQUESTING_EVENT_ID: 5
REQUESTING_OBJECT_INSTANCE_BEGIN: 140211086465800
BLOCKING_ENGINE_LOCK_ID: 140211201963888:2:4:2:140211086459880
BLOCKING_ENGINE_TRANSACTION_ID: 1554
BLOCKING_THREAD_ID: 46
BLOCKING_EVENT_ID: 12
BLOCKING_OBJECT_INSTANCE_BEGIN: 140211086459880
ほとんどのパフォーマンススキーマデータ収集とは異なり、データロック情報を収集するか、データロックテーブルのサイズを制御するためのシステム変数を制御するためのインストゥルメントはありません。 パフォーマンススキーマは、サーバーですでに使用可能な情報を収集するため、この情報を生成したり、その収集を制御するパラメータを必要とするメモリーまたは CPU のオーバーヘッドはありません。
data_lock_waits
テーブルを使用すると、負荷が高いときに発生するパフォーマンスの問題の診断に役立ちます。 InnoDB
については、セクション15.15.2「InnoDB INFORMATION_SCHEMA トランザクションおよびロック情報」 でこのトピックの説明を参照してください。
data_lock_waits
テーブルのカラムは data_locks
テーブルのカラムと似ているため、ここでのカラムの説明は省略されています。 カラムの詳細は、セクション27.12.13.1「data_locks テーブル」 を参照してください。
data_lock_waits
テーブルには、次のカラムがあります:
-
ENGINE
ロックを要求したストレージエンジン。
-
REQUESTING_ENGINE_LOCK_ID
ストレージエンジンによって要求されたロックの ID。 ロックの詳細を取得するには、このカラムを
data_locks
テーブルのENGINE_LOCK_ID
カラムと結合します。 -
REQUESTING_ENGINE_TRANSACTION_ID
ロックを要求したトランザクションのストレージエンジン内部 ID。
-
REQUESTING_THREAD_ID
ロックをリクエストしたセッションのスレッド ID。
-
REQUESTING_EVENT_ID
ロックを要求したセッションでロック要求を引き起こしたパフォーマンススキーマイベント。
-
REQUESTING_OBJECT_INSTANCE_BEGIN
要求されたロックのメモリー内のアドレス。
-
BLOCKING_ENGINE_LOCK_ID
ブロッキングロックの ID。 ロックの詳細を取得するには、このカラムを
data_locks
テーブルのENGINE_LOCK_ID
カラムと結合します。 -
BLOCKING_ENGINE_TRANSACTION_ID
ブロッキングロックを保持するトランザクションのストレージエンジン内部 ID。
-
BLOCKING_THREAD_ID
ブロッキングロックを保持するセッションのスレッド ID。
-
BLOCKING_EVENT_ID
パフォーマンススキーマを保持しているセッションでブロッキングロックの原因となったパフォーマンススキーマイベント。
-
BLOCKING_OBJECT_INSTANCE_BEGIN
ブロッキングロックのメモリー内のアドレス。
data_lock_waits
テーブルには次のインデックスがあります:
(
REQUESTING_ENGINE_LOCK_ID
、ENGINE
) のインデックス(
BLOCKING_ENGINE_LOCK_ID
、ENGINE
) のインデックス(
REQUESTING_ENGINE_TRANSACTION_ID
、ENGINE
) のインデックス(
BLOCKING_ENGINE_TRANSACTION_ID
、ENGINE
) のインデックス(
REQUESTING_THREAD_ID
、REQUESTING_EVENT_ID
) のインデックス(
BLOCKING_THREAD_ID
、BLOCKING_EVENT_ID
) のインデックス
TRUNCATE TABLE
は、data_lock_waits
テーブルに対して許可されていません。