MySQL でメタデータ ロックがブロックされている場所を確認する方法 手順: 1. セッション1の実行: トランザクションを開始します。 t1から*を選択します。 2. ステップ 1 の後にセッション 2 が実行されます。 テーブル t1 を削除します。 このとき、セッション 2 のドロップ ステートメントはブロックされます。では、メタデータ ロックをどのように分析して表示するのでしょうか? 方法: 1) show processlist; を実行すると、drop ステートメントがメタデータ ロックを待機していることがわかります。 mysql> プロセスリストを表示します。 +----+--------------+-----------+---------+----------+----------+-------------------------------------------------------------------------------------------+------------------+ | ID | ユーザー | ホスト | db | コマンド | 時間 | 状態 | 情報 | +----+--------------+-----------+---------+----------+----------+-------------------------------------------------------------------------------------------+------------------+ | 5 | システム ユーザー | | NULL | 接続 | 1050234 | マスターがイベントを送信するのを待機中 | NULL | | 6 | システム ユーザー | | NULL | 接続 | 983193 | スレーブはすべてのリレー ログを読み取りました。スレーブ I/O スレッドがそれを更新するのを待機しています | NULL | | 8 | ルート | ローカルホスト | yzs | スリープ | 93 | | NULL | | 9 | root | localhost | yzs | クエリ | 3 | テーブル メタデータ ロックを待機中 | テーブル t1 を削除 | | 10 | root | localhost | NULL | クエリ | 0 | init | プロセスリストを表示 | +----+--------------+-----------+---------+----------+----------+-------------------------------------------------------------------------------------------+------------------+ セット内の行数は 5 です (0.00 秒) 2) 現在実行中のトランザクションのスレッドは trx_mysql_thread_id:8 であることがわかりますが、このスレッドは何を実行しているのでしょうか? mysql> information_schema.innodb_trx\G から * を選択します ************************** 1. 行 **************************** トランザクションID: 17683 trx_state: 実行中 trx_started: 2017-10-18 05:32:46 trx_requested_lock_id: NULL trx_wait_started: NULL trx_weight: 0 trx_mysql_スレッドID: 8 trx_query: NULL trx_operation_state: NULL 使用中のtrxテーブル: 0 trx_tables_locked: 0 trx_lock_structs: 0 trx_lock_memory_bytes: 320 ロックされた行数: 0 trx_rows_modified: 0 trx_concurrency_tickets: 0 trx_isolation_level: 繰り返し読み取り trx_unique_checks: 1 trx_foreign_key_checks: 1 trx_last_foreign_key_error: NULL trx_adaptive_hash_latched: 0 trx_adaptive_hash_timeout: 10000 trx_is_read_only: 0 trx_autocommit_non_locking: 0 セット内の1行(0.03秒) 3) このスレッドが select ステートメントを実行していることがわかります。show engine innodb status を実行すると、トランザクションがスリープ状態にあることがわかります。これは、トランザクション ステートメントは実行されたがコミットされていないことを意味します。 トランザクションのスレッドを強制終了するには、kill 8 を実行します。または、ビジネスの SQL ステートメントをチェックして、未送信の SQL ステートメントがあるかどうかを確認します。 mysql> performance_schema.events_statements_current\G から * を選択します ************************** 1. 行 **************************** スレッドID: 27 イベントID: 15 END_EVENT_ID: 15 EVENT_NAME: ステートメント/sql/select ソース: mysqld.cc:962 タイマー開始: 1050544992900922000 タイマー終了: 1050544993740836000 タイマー待機時間: 839914000 ロック時間: 196000000 SQL_TEXT: t1から*を選択 ダイジェスト: 1aa32397c8ec37230aed78ef16126571 DIGEST_TEXT: `t1` から * を選択 現在のスキーマ: yzs オブジェクトタイプ: NULL OBJECT_SCHEMA: NULL オブジェクト名: NULL OBJECT_INSTANCE_BEGIN: NULL エラー: 0 返されたSQLSTATE: NULL メッセージテキスト: NULL エラー: 0 警告: 0 影響を受ける行数: 0 送信済み行数: 10 検査済み行数: 10 作成されたTMP_DISK_TABLES: 0 作成されたTMPテーブル: 0 SELECT_FULL_JOIN: 0 SELECT_FULL_RANGE_JOIN: 0 選択範囲: 0 選択範囲チェック: 0 選択スキャン: 1 ソート_マージ_パス: 0 ソート範囲: 0 ソート行: 0 ソートスキャン: 0 インデックス未使用: 1 未使用インデックス: 0 ネスティングイベントID: NULL ネスティングイベントタイプ: NULL ご質問がありましたら、メッセージを残すか、コミュニティに参加して話し合いましょう。お読みいただきありがとうございます。お役に立てれば幸いです。このサイトをサポートしていただき、ありがとうございます。 以下もご興味があるかもしれません:
|
<<: Ubuntu 18.04 向け VMware Tools のインストールと構成のチュートリアル
クエリで EXPLAIN を実行するとデータベースが変更されるかどうかを尋ねられた場合、おそらく「い...
カテゴリ選択を選択します。テストの結果、IE と FF はこの要素を適切にサポートできることがわかり...
目次説明する:要約する補充するDOM を直接変更して操作する js や jQuery とは異なり、V...
この記事の例では、画像の切り取りを実現するためのjsの具体的なコードを参考までに共有しています。具体...
まずdockerコンテナを実行しますルートユーザーとしてコマンドを実行する sudo docker ...
目次プロトタイプチェーン図プロトタイピングに必須の知識プロトタイププロパティ(プロトタイプを表示) ...
Web ページの制作では、要素の表示と非表示は非常に一般的な要件です。この記事では、要素を表示したり...
目次1: galera-clusterの紹介2. galera-clusterの仕組み3: Mari...
目次概要最初のステップステップ2なぜ別の _data が必要なのでしょうか?データにもう少しデータを...
HTML 開発の歴史: HTML は英語で Hypertext Marked Language の...
MySQL データをエクスポートする目的は、データベースのバックアップ、テーブル構造のエクスポート、...
1. ツールディレクトリのファイル構造 [root@www tools]# ツリーツール/ ツール/...
CSS3お願いしますこのウェブサイトを自分で見て、パラメータを変更し、CSS3効果をオン/オフにする...
FileZilla Serverをサーバーにインストールすると、425データ接続を開けない問題が発生...
最近、仕事でサウンド ファイルを再生するために Web ページにプレーヤーを埋め込む必要に迫られまし...