MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

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

27.12.13.3 metadata_locks テーブル

MySQL では、メタデータロックを使用して、データベースオブジェクトへの同時アクセスを管理し、データの一貫性を確保します。セクション8.11.4「メタデータのロック」 を参照してください。 メタデータのロックは、テーブルのみでなく、スキーマ、ストアドプログラム (プロシージャ、ファンクション、トリガー、スケジュール済イベント)、テーブルスペース、GET_LOCK() 関数で取得されたユーザーロック (セクション12.15「ロック関数」 を参照)、および セクション5.6.8.1「ロックサービス」 で説明されているロックサービスで取得されたロックにも適用されます。

パフォーマンススキーマは、metadata_locks テーブルを介してメタデータロック情報を公開します:

この情報を使用すると、セッション間のメタデータロックの依存性を理解できます。 セッションが待機しているロックだけでなく、そのロックを現在保持しているセッションも表示できます。

metadata_locks テーブルは読取り専用であり、更新できません。 デフォルトでは自動サイズ設定されています。テーブルサイズを構成するには、サーバーの起動時に performance_schema_max_metadata_locks システム変数を設定します。

メタデータロックインストゥルメンテーションでは、デフォルトで有効になっている wait/lock/metadata/sql/mdl インストゥルメントが使用されます。

サーバー起動時のメタデータロックインストゥルメンテーションの状態を制御するには、my.cnf ファイルで次のような行を使用します:

実行時にメタデータロックインストゥルメンテーションの状態を制御するには、setup_instruments テーブルを更新します:

パフォーマンススキーマは、LOCK_STATUS カラムを使用して各ロックのステータスを示す metadata_locks テーブルの内容を次のように保守します:

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

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

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