このページは機械翻訳したものです。
このセクションでは、MySQL 8.0 内の INFORMATION_SCHEMA INNODB_LOCKS および INNODB_LOCK_WAITS テーブルよりも優先される、パフォーマンススキーマ data_locks および data_lock_waits テーブルによって公開されるロック情報について説明します。 古い INFORMATION_SCHEMA テーブルに関して記述されている同様の説明は、MySQL 5.7 Reference Manual の Persistence and Consistency of InnoDB Transaction and Locking Information を参照してください。
トランザクションテーブルとロックテーブル (INFORMATION_SCHEMA INNODB_TRX テーブル、パフォーマンススキーマ data_locks テーブル、および data_lock_waits テーブル) によって公開されるデータは、高速変更データの概要を表します。 これは、アプリケーションによって開始された更新が発生した場合にのみデータが変更されるユーザーテーブルとは異なります。 基礎となるデータはシステム管理の内部データであり、非常に迅速に変更できます:
-
データは、
INNODB_TRX、data_locksおよびdata_lock_waitsテーブル間で一貫性がない場合があります。data_locksおよびdata_lock_waitsテーブルは、INNODB_TRXテーブル内のトランザクションに関するロック情報を提供するために、InnoDBストレージエンジンからライブデータを公開します。 ロックテーブルから取得されたデータは、SELECTの実行時に存在しますが、クエリー結果がクライアントによって消費されるまでに削除または変更される場合があります。data_locksをdata_lock_waitsと結合すると、存在しない、またはまだ存在しないdata_locksの親行を識別するdata_lock_waitsの行を表示できます。 -
トランザクションテーブルおよびロックテーブルのデータは、
INFORMATION_SCHEMAPROCESSLISTテーブルまたはパフォーマンススキーマthreadsテーブルのデータと整合性がとれていない可能性があります。たとえば、
InnoDBトランザクションのデータを比較し、テーブルをPROCESSLISTテーブルのデータとロックする場合は注意が必要です。 1 つのSELECT(たとえば、INNODB_TRXとPROCESSLISTの結合) を発行した場合でも、一般に、これらのテーブルの内容には整合性がありません。INNODB_TRXでは、PROCESSLISTに存在しない行や、INNODB_TRX.TRX_QUERYに表示されているトランザクションの現在実行中の SQL クエリーがPROCESSLIST.INFOのものと異なる行を参照できます。