MySQL 8.0 リファレンスマニュアル


27.12.13.2 data_lock_waits テーブル

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_IDENGINE) のインデックス

  • (BLOCKING_ENGINE_LOCK_IDENGINE) のインデックス

  • (REQUESTING_ENGINE_TRANSACTION_IDENGINE) のインデックス

  • (BLOCKING_ENGINE_TRANSACTION_IDENGINE) のインデックス

  • (REQUESTING_THREAD_IDREQUESTING_EVENT_ID) のインデックス

  • (BLOCKING_THREAD_IDBLOCKING_EVENT_ID) のインデックス

TRUNCATE TABLE は、data_lock_waits テーブルに対して許可されていません。


関連キーワード:  テーブル, パフォーマンス, スキーマ, ロック, data, waits, REQUESTING, BLOCKING, events, replication