MySQL で「テーブル メタデータ ロックの待機中」を引き起こしている犯人トランザクションを特定する方法

Linda Hamilton
リリース: 2024-10-30 17:23:25
オリジナル
886 人が閲覧しました

How to Identify the Culprit Transaction Causing

「テーブル メタデータ ロックを待機しています」のソースを調査する

MySQL で、DDL 中に「テーブル メタデータ ロックを待機しています」メッセージが発生するクエリはイライラするかもしれません。この状態は、多くの場合、別のトランザクションが影響を受けるテーブルのロックを保持しており、現在のトランザクションの進行を妨げていることを示します。

犯人トランザクションの特定

どのトランザクションが原因であるかを特定するにはこの保留の責任がある場合は、次のアプローチの使用を検討してください。

1. MySQL v5.5.24 以下

MySQL バージョン 5.7.3 より前の場合は、次のコマンドを実行します。

SHOW ENGINE INNODB STATUS \G
ログイン後にコピー

「TRANSACTIONS」セクションを調べて、問題のあるトランザクションを特定します。

2.情報スキーマ テーブル

待機中のすべてのロック:

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
ログイン後にコピー

ブロック中のトランザクション:

SELECT *
FROM INFORMATION_SCHEMA.INNODB_LOCKS
WHERE LOCK_TRX_ID IN (SELECT BLOCKING_TRX_ID FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS);
ログイン後にコピー

特定のテーブルのロック:

SELECT *
FROM INFORMATION_SCHEMA.INNODB_LOCKS
WHERE LOCK_TABLE = db_name.table_name;
ログイン後にコピー

ロックを待機しているトランザクション:

SELECT TRX_ID, TRX_MYSQL_THREAD_ID, TRX_QUERY
FROM INFORMATION_SCHEMA.INNODB_TRX
WHERE TRX_STATE = 'LOCK WAIT';
ログイン後にコピー

追加参照:

この問題のトラブルシューティングに関する包括的なガイドについては、「MySQL のトラブルシューティング: クエリが機能しない場合の対処方法」、第 6 章、96 ページを参照してください。

以上がMySQL で「テーブル メタデータ ロックの待機中」を引き起こしている犯人トランザクションを特定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!