このトピックでは、DAS のロック分析機能を使用して、データベースのメタデータロック (MDL) 待ち分析およびトランザクションブロッキング分析を実行する方法について説明します。
このドキュメントの画像に表示されているデータはテストケースのものです。 実際の使用では、スレッド ID や SQL ステートメントなど、実際のパラメーターをご参照ください。
前提条件
-
対象のデータベースエンジン:
-
RDS MySQL
-
PolarDB for MySQL
-
-
対象のデータベースインスタンスが DAS に接続されており、そのアクセス状態が [正常なアクセス] と表示されていること。 データベースインスタンスの接続方法の詳細については、「データベースインスタンスの接続」をご参照ください。
-
Alibaba Cloud Managed Services (旧 DAS Economy Edition) が有効化されていること。
重要-
Alibaba Cloud Managed Services (旧 DAS Economy Edition) は、特定のリージョンでのみ利用可能です。 詳細については、「エディション別のサポート対象データベースとリージョン」をご参照ください。
-
Alibaba Cloud Managed Services (旧 DAS Economy Edition) を有効化する方法については、「Alibaba Cloud Managed Services (旧 DAS Economy Edition) の管理」をご参照ください。
-
ロックタイプ
-
メタデータロック (MDL) 分析
-
分析データ:
information_schema.processlistなどのテーブルのデータを使用してロック待ちの関係を推測し、関係グラフを生成します。
-
-
トランザクションブロッキング分析
重要トランザクションブロッキング分析は、PolarDB for MySQL 5.6 インスタンスではサポートされていません。
-
分析データ:
information_schema.processlist、information_schema.innodb_trx、および以下のテーブルのデータを使用して、トランザクションブロッキングの関係を分析し、関係グラフを生成します。-
RDS MySQL 5.6 および 5.7:
information_schema.innodb_lock_waits -
PolarDB for MySQL 5.7:
information_schema.innodb_lock_waits -
RDS MySQL および PolarDB for MySQL 8.0:
performance_schema.data_lock_waits
-
-
パラメーター設定: RDS MySQL 8.0 および PolarDB for MySQL 8.0 インスタンスでは、
performance_schemaパラメーターを有効にする必要があります。 インスタンスパラメーターを変更するには:-
RDS MySQL の場合、「インスタンスパラメーターの設定」をご参照ください。
-
PolarDB for MySQL の場合、「クラスターパラメーターとノードパラメーターの設定」をご参照ください。
-
-
トリガー方法
-
ロック分析 – オンデマンド分析:[ロック分析] ページで、手動でその他のロック分析をトリガーします。
-
インスタンスセッション – 自動分析:[インスタンスセッション] ページを更新すると、その他のロック分析が自動的に実行されます。
ロック分析 – オンデマンド分析
分析の作成
にログインします。DASコンソール.
左側のナビゲーションウィンドウで、インスタンスモニター.
表示されるページで、管理するデータベースインスタンスを見つけ、インスタンスIDをクリックします。 インスタンス詳細ページが表示されます。
-
左側メニューで [ロック分析] をクリックします。 [ロック分析] ページの [その他のロック分析] で、[分析の作成] をクリックして分析を開始します。
詳細の表示
診断結果の横にある矢印アイコン (
) をクリックして、メタデータロックの待ちとトランザクションブロッキングの詳細を表示します。 [その他のロック分析] ページで、診断レコードを展開すると、[メタデータロック] (ブロックされたセッション 2 件) や [トランザクションロック] (ブロックされたセッション 2 件) などのロックタイプの詳細が表示されます。 ロックタイプの横にある [詳細の表示] をクリックすると、特定のブロッキング情報が表示されます。
トランザクションロックの詳細
リスト内のトランザクションロックの [操作] 列にある [詳細の表示] をクリックすると、トランザクションロックの詳細情報を 2 つの方法で表示できます:
-
リスト: トランザクションロック詳細リストには、ブロックされたトランザクションに関する情報が、ID、ユーザー、ホスト、データベース名、コマンド、ブロックされたトランザクションの列を含むテーブル形式で表示されます。 [ブロックされたトランザクション] 列の [詳細の表示] リンクをクリックすると、ID、ユーザー、ホスト、データベース名、コマンド、実行時間 (秒)、ステータス、SQL ステートメントなど、ブロックされたトランザクションの詳細情報がポップアップウィンドウで表示されます。
-
ビュー: [ビュー] タブには、トランザクションロックの依存関係が視覚的なグラフとして表示されます。 ロックを保持しているセッションが上部に表示され、LOCK WAIT コネクタは、ロックを待っているセッションを示します。 セッションノードをクリックすると詳細パネルが展開され、[ID]、[トランザクションの解決策]、[トランザクションによってロックされた行]、[トランザクションによってロックされたテーブル]、[トランザクションによって更新された行] が表示されます。
メタデータロックの詳細
リスト内のメタデータロックの [操作] 列にある [詳細の表示] をクリックすると、メタデータロックの詳細が視覚的に表示されます。 ビューでセッションブロックをクリックすると、その詳細情報が下に表示されます。 このページから関連セッションを強制終了することもできます。 メタデータロックの診断ページには、[疑わしいセッション (1) メタデータロック]、[テーブル students の DDL セッション (1)]、[テーブル students のその他のセッション (1)] という 3 つのノードを持つロック関係グラフが表示されます。 「テーブルメタデータロックを待機中」というラベルの付いた矢印は、待機関係を示します。 疑わしいセッションを展開すると、ID 197889、ユーザー das、部分的にマスクされたホストアドレス、データベース das、コマンド Sleep、実行時間 176 秒が表示されます。 下部には、メタデータロックの問題を解決するための 3 つのアクションボタンがあります: [選択したセッションを強制終了]、[すべての疑わしいセッションを強制終了]、[すべての DDL ステートメントを強制終了]。
SQL エクスプローラーおよび監査分析との組み合わせ
Sleep 状態の疑わしいセッションは、トランザクションを開始し、SQL ステートメントを実行したものの、まだコミットまたはロールバックしていないため、SQL 情報が表示されない場合があります。 この場合、対象インスタンスの左側メニューで [SQL エクスプローラーと監査] をクリックします。 [監査] ページで、[高度なクエリを有効化] をクリックし、疑わしいセッションのスレッド ID を入力して、そのセッションによって実行された SQL ステートメントをクエリします。 たとえば、コミットされていないトランザクションがロック待ちを引き起こした場合などです。 [監査] タブで、[クエリ条件の設定] 高度なクエリフォームを展開し、時間範囲を 2024 年 11 月 4 日 14:34:49 から 2024 年 11 月 4 日 16:49:49 に設定し、[スレッド ID] に 197889 を入力して [クエリ] をクリックします。 下部の [ログリスト] には、指定された期間にこのスレッドによって実行された SQL レコードが表示されます。これには、update students set name=UUID() where id = 3 (2024-11-04 16:27:22.426 に実行) と begin (2024-11-04 16:27:21.322 に実行) が含まれます。
インスタンスセッション – 自動分析
操作手順
にログインします。DASコンソール.
左側のナビゲーションウィンドウで、インスタンスモニター.
表示されるページで、管理するデータベースインスタンスを見つけ、インスタンスIDをクリックします。 インスタンス詳細ページが表示されます。
-
左側メニューで [インスタンスセッション] をクリックします。 [セッション管理] ページでは、その他のロック分析が自動的に実行され、結果が右上に表示されます。 インスタンス詳細の [セッション] ページで、上部のメトリクスエリアにある [ロック待ちの有無] ステータスを確認します。 [なし] と表示されている場合は、ロック待ちは存在しません。 [詳細の表示] をクリックして、ロック待ちをさらに分析します。
インスタンスセッションページでの詳細表示
[インスタンスセッション] ページでロック待ちが存在する場合、[詳細の表示] をクリックすると、ドロワーにトランザクションロック (存在する場合) とメタデータロック (存在する場合) が表示されます。 DAS インスタンスの [セッション] ページの上部のメトリクスエリアには、アクティブなセッション 6 件、CPU 使用率 0.3%、接続使用率 0.1%、異常なセッション 4 件、[ロック待ちの有無] のステータスが [あり] と表示されています。 下部のセッションリストでは、一部のセッションのステータスが「テーブルメタデータロックを待機中」と表示されており、ロック待ちによるブロッキングを示しています。 [詳細の表示] をクリックして、ロック待ちの関係をさらに分析します。
トランザクションロックの詳細
リスト内のトランザクションロックの [操作] 列にある [詳細の表示] をクリックすると、2 つの表示オプション (リストとビュー) が表示されます。機能はオンデマンド分析の場合と同様です。 詳細については、「オンデマンド分析 – トランザクションロックの詳細」をご参照ください。
[ロック待ち] ポップアップウィンドウの [トランザクションロック] タブには、[ロックタイプ] と [ブロックされたセッション] を示すテーブルが表示されます。
メタデータロックの詳細
リスト内のメタデータロックの [操作] 列にある [詳細の表示] をクリックすると、オンデマンド分析と同じ方法で、メタデータロックの詳細が視覚的に表示されます。 詳細については、「オンデマンド分析 – メタデータロックの詳細」をご参照ください。
[ロック待ち] ポップアップウィンドウの [メタデータロック] タブには、ロックの保持と待機の関係を示す視覚的なグラフが表示されます。
ロック分析ページでの詳細表示
[ロック分析] ページで、診断結果の横にある矢印アイコン (
) をクリックして、[インスタンスセッション] ページで自動的にトリガーされたその他のロック分析の履歴統計を確認できます。 表示方法はオンデマンド分析の場合と同様です。 詳細については、「オンデマンド分析 – 詳細の表示」をご参照ください。 [その他のロック分析] ページで、時間範囲を選択し、[表示] をクリックし、[ロックの検出] が [はい] の診断レコードを見つけて展開すると、ロックタイプ (メタデータロック、トランザクションロック) とブロックされたセッション数が表示されます。 [詳細の表示] をクリックすると、ロック詳細ページに移動します。