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


15.15.2.3 InnoDB トランザクションおよびロック情報の永続性と一貫性

注記

このセクションでは、MySQL 8.0 内の INFORMATION_SCHEMA INNODB_LOCKS および INNODB_LOCK_WAITS テーブルよりも優先される、パフォーマンススキーマ data_locks および data_lock_waits テーブルによって公開されるロック情報について説明します。 古い INFORMATION_SCHEMA テーブルに関して記述されている同様の説明は、MySQL 5.7 Reference ManualPersistence and Consistency of InnoDB Transaction and Locking Information を参照してください。

トランザクションテーブルとロックテーブル (INFORMATION_SCHEMA INNODB_TRX テーブル、パフォーマンススキーマ data_locks テーブル、および data_lock_waits テーブル) によって公開されるデータは、高速変更データの概要を表します。 これは、アプリケーションによって開始された更新が発生した場合にのみデータが変更されるユーザーテーブルとは異なります。 基礎となるデータはシステム管理の内部データであり、非常に迅速に変更できます:

  • データは、INNODB_TRXdata_locks および data_lock_waits テーブル間で一貫性がない場合があります。

    data_locks および data_lock_waits テーブルは、INNODB_TRX テーブル内のトランザクションに関するロック情報を提供するために、InnoDB ストレージエンジンからライブデータを公開します。 ロックテーブルから取得されたデータは、SELECT の実行時に存在しますが、クエリー結果がクライアントによって消費されるまでに削除または変更される場合があります。

    data_locksdata_lock_waits と結合すると、存在しない、またはまだ存在しない data_locks の親行を識別する data_lock_waits の行を表示できます。

  • トランザクションテーブルおよびロックテーブルのデータは、INFORMATION_SCHEMA PROCESSLIST テーブルまたはパフォーマンススキーマ threads テーブルのデータと整合性がとれていない可能性があります。

    たとえば、InnoDB トランザクションのデータを比較し、テーブルを PROCESSLIST テーブルのデータとロックする場合は注意が必要です。 1 つの SELECT (たとえば、INNODB_TRXPROCESSLIST の結合) を発行した場合でも、一般に、これらのテーブルの内容には整合性がありません。 INNODB_TRX では、PROCESSLIST に存在しない行や、INNODB_TRX.TRX_QUERY に表示されているトランザクションの現在実行中の SQL クエリーが PROCESSLIST.INFO のものと異なる行を参照できます。


関連キーワード:  InnoDB, テーブル, ロック, 構成, INFORMATION, SCHEMA, トランザクション, データ, 情報, 圧縮