Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


このページは機械翻訳したものです。

27.12.13.1 data_locks テーブル

data_locks テーブルには、保持およびリクエストされたデータロックが表示されます。 どのロック要求がどの保持ロックによってブロックされるかについては、セクション27.12.13.2「data_lock_waits テーブル」 を参照してください。

データロック情報の例:

mysql> SELECT * FROM performance_schema.data_locks\G*************************** 1. row ***************************               ENGINE: INNODB       ENGINE_LOCK_ID: 139664434886512:1059:139664350547912ENGINE_TRANSACTION_ID: 2569            THREAD_ID: 46             EVENT_ID: 12        OBJECT_SCHEMA: test          OBJECT_NAME: t1       PARTITION_NAME: NULL    SUBPARTITION_NAME: NULL           INDEX_NAME: NULLOBJECT_INSTANCE_BEGIN: 139664350547912            LOCK_TYPE: TABLE            LOCK_MODE: IX          LOCK_STATUS: GRANTED            LOCK_DATA: NULL*************************** 2. row ***************************               ENGINE: INNODB       ENGINE_LOCK_ID: 139664434886512:2:4:1:139664350544872ENGINE_TRANSACTION_ID: 2569            THREAD_ID: 46             EVENT_ID: 12        OBJECT_SCHEMA: test          OBJECT_NAME: t1       PARTITION_NAME: NULL    SUBPARTITION_NAME: NULL           INDEX_NAME: GEN_CLUST_INDEXOBJECT_INSTANCE_BEGIN: 139664350544872            LOCK_TYPE: RECORD            LOCK_MODE: X          LOCK_STATUS: GRANTED            LOCK_DATA: supremum pseudo-record

ほとんどのパフォーマンススキーマデータ収集とは異なり、データロック情報を収集するか、データロックテーブルのサイズを制御するためのシステム変数を制御するためのインストゥルメントはありません。 パフォーマンススキーマは、サーバーですでに使用可能な情報を収集するため、この情報を生成したり、その収集を制御するパラメータを必要とするメモリーまたは CPU のオーバーヘッドはありません。

data_locks テーブルを使用すると、負荷が高いときに発生するパフォーマンスの問題の診断に役立ちます。InnoDB については、セクション15.15.2「InnoDB INFORMATION_SCHEMA トランザクションおよびロック情報」 でこのトピックの説明を参照してください。

data_locks テーブルには、次のカラムがあります:

  • ENGINE

    ロックを保持または要求したストレージエンジン。

  • ENGINE_LOCK_ID

    ストレージエンジンによって保持または要求されたロックの ID。 (ENGINE_LOCK_IDENGINE) 値のタプルは一意です。

    「ロック ID」形式は内部形式であり、いつでも変更される可能性があります。 アプリケーションは、特定の形式のロック ID に依存しないでください。

  • ENGINE_TRANSACTION_ID

    ロックを要求したトランザクションのストレージエンジン内部 ID。 これはロックの所有者とみなすことができますが、ロックはまだ保留中であり、実際にはまだ付与されていない可能性があります (LOCK_STATUS='WAITING')。

    トランザクションがまだ書込み操作を実行していない場合 (読取り専用とみなされます)、カラムにはユーザーが解釈しようとしない内部データが含まれます。 それ以外の場合、カラムはトランザクション ID です。

    InnoDB の場合、トランザクションの詳細を取得するには、このカラムをINFORMATION_SCHEMAINNODB_TRX テーブルのTRX_ID カラムと結合します。

  • THREAD_ID

    ロックを作成したセッションのスレッド ID。 スレッドの詳細を取得するには、このカラムをパフォーマンススキーマthreads テーブルのTHREAD_ID カラムと結合します。

    THREAD_IDEVENT_ID とともに使用して、メモリー内にロックデータ構造が作成されたイベントを判別できます。 (このイベントは、データ構造を使用して複数のロックが格納されている場合、この特定のロックリクエストが発生する前に発生した可能性があります。)

  • EVENT_ID

    ロックの原因となったパフォーマンススキーマイベント。 (THREAD_IDEVENT_ID) 値のタプルは、他の「パフォーマンススキーマ」テーブルの親イベントを暗黙的に識別します:

    • events_waits_xxx テーブルの親待機イベント

    • events_stages_xxx テーブルの親ステージイベント

    • events_statements_xxx テーブルの親ステートメントイベント

    • events_transactions_current テーブルの親トランザクションイベント

    親イベントの詳細を取得するには、THREAD_ID カラムとEVENT_ID カラムを適切な親イベントテーブルの同名のカラムと結合します。セクション27.19.2「親イベント情報の取得」を参照してください。

  • OBJECT_SCHEMA

    ロックされたテーブルを含むスキーマ。

  • OBJECT_NAME

    ロックされたテーブルの名前。

  • PARTITION_NAME

    ロックされたパーティションの名前 (存在する場合)。それ以外の場合はNULL

  • SUBPARTITION_NAME

    ロックされたサブパーティションの名前 (存在する場合)。それ以外の場合はNULL

  • INDEX_NAME

    ロックされたインデックスの名前 (存在する場合)。それ以外の場合はNULL

    実際には、InnoDB は常にインデックス (GEN_CLUST_INDEX) を作成するため、INDEX_NAMEInnoDB テーブルに対してNULL 以外です。

  • OBJECT_INSTANCE_BEGIN

    ロックのメモリー内のアドレス。

  • LOCK_TYPE

    ロックのタイプ。

    この値はストレージエンジンに依存します。InnoDB の場合、許可される値は、行レベルロックの場合はRECORD、テーブルレベルロックの場合はTABLE です。

  • LOCK_MODE

    ロックのリクエスト方法。

    この値はストレージエンジンに依存します。InnoDB の場合、許可される値はS[,GAP],X[,GAP],IS[,GAP],IX[,GAP],AUTO_INC およびUNKNOWN です。AUTO_INC およびUNKNOWN 以外のロックモードは、ギャップロック (存在する場合) を示します。S,X,IS,IX およびギャップロックの詳細は、セクション15.7.1「InnoDB ロック」 を参照してください。

  • LOCK_STATUS

    ロックリクエストのステータス。

    この値はストレージエンジンに依存します。InnoDB の場合、許可される値は、GRANTED (ロックが保持されている) およびWAITING (ロックが待機されている) です。

  • LOCK_DATA

    ロックに関連付けられているデータ (ある場合)。 この値はストレージエンジンに依存します。InnoDB の場合、LOCK_TYPERECORD の場合は値が表示され、それ以外の場合はNULL 値が表示されます。 ロックされたレコードの主キー値は、主キーインデックスに設定されたロックに対して表示されます。 ロックされたレコードのセカンダリインデックス値が表示され、セカンダリインデックスに配置されたロックに主キー値が追加されます。 主キーがない場合、LOCK_DATA では、InnoDB クラスタインデックスの使用を制御するルールに従って、選択した一意インデックスのキー値または一意のInnoDB 内部行 ID 番号のいずれかが表示されます (セクション15.6.2.1「クラスタインデックスとセカンダリインデックス」 を参照)。LOCK_DATA は、supremum 擬似レコードで取得されたロックについて「supremum 擬似レコード」を報告します。 ロックされたレコードを含むページが、ロックの保持中にディスクに書き込まれたためにバッファプールにない場合、InnoDB はディスクからページをフェッチしません。 かわりに、LOCK_DATANULL をレポートします。

data_locks テーブルには次のインデックスがあります:

  • 主キー (ENGINE_LOCK_IDENGINE)

  • (ENGINE_TRANSACTION_IDENGINE) のインデックス

  • (THREAD_IDEVENT_ID) のインデックス

  • (OBJECT_SCHEMA,OBJECT_NAME,PARTITION_NAME,SUBPARTITION_NAME) のインデックス

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