このトピックでは、Database Autonomy Service (DAS) のロック分析機能を使用して、メタデータロックの待機とトランザクションのブロッキングを分析する方法について説明します。
図中のデータはデモ目的のものです。実際には、スレッド ID や SQL 文などのパラメーターは、実際のデータベース環境によって異なります。
前提条件
宛先データベースインスタンスは、次のいずれかのデータベースエンジンを実行します:
RDS for MySQL
PolarDB for MySQL
宛先データベースインスタンスが DAS に接続されており、接続ステータスが 正常なアクセス であること。詳細については、「データベースインスタンスを DAS に接続する」をご参照ください。
DAS の Alibaba Cloud Managed Services (旧称: Economy Edition) が有効になっていること。
重要DAS の Alibaba Cloud Managed Services (旧称: Economy Edition) は、特定のリージョンでのみ利用可能です。詳細については、「エディション別のサポート対象データベースとリージョン」をご参照ください。
DAS の Alibaba Cloud Managed Services (旧称: Economy Edition) を有効にする方法については、「DAS の Alibaba Cloud Managed Services (旧称: Economy Edition) を管理する」をご参照ください。
ロックタイプ
メタデータロック分析
分析データ: DAS は、
information_schema.processlistなどのテーブルのデータに基づいてロック待ち関係を判断し、関係グラフを生成します。
トランザクションブロッキング分析
重要トランザクションブロッキング分析機能は、PolarDB for MySQL 5.6 インスタンスではサポートされていません。
分析データ: DAS は、
information_schema.processlist、information_schema.innodb_trx、および次のテーブルのデータに基づいてトランザクションブロッキング関係を分析し、関係グラフを生成します。RDS for MySQL 5.6 および 5.7:
information_schema.innodb_lock_waitsPolarDB for MySQL 5.7:
information_schema.innodb_lock_waitsRDS for MySQL および PolarDB for MySQL 8.0:
performance_schema.data_lock_waits
パラメーター設定: RDS for MySQL 8.0 および PolarDB for MySQL 8.0 インスタンスでは、
performance_schemaパラメーターを有効にします。データベースインスタンスのパラメーターを変更するには:RDS for MySQL の場合、詳細については、「インスタンスパラメーターの設定」をご参照ください。
PolarDB for MySQL の場合、詳細については、「クラスターおよびノードのパラメーターの設定」をご参照ください。
トリガーメソッド
ロック分析でのトリガー分析: [ロック分析] ページで、手動でその他のロック分析をトリガーできます。
インスタンスセッションでの自動分析: [インスタンスセッション] ページを更新すると、その他のロック分析が自動的にトリガーされます。
ロック分析でのトリガー分析
分析の作成
DAS コンソールにログインします。
左側のナビゲーションウィンドウで、[オペレーションセンター] > [インスタンスモニタリング] をクリックします。
ターゲットインスタンスを見つけ、インスタンス ID をクリックして、インスタンス詳細ページに移動します。
左側のナビゲーションウィンドウで、[ロック分析] をクリックします。[ロック分析] ページの [その他のロック分析] セクションで、[分析の作成] をクリックします。

詳細の表示
診断結果の
アイコンをクリックして、メタデータロックの待機とトランザクションのブロッキングに関する情報を表示します。
トランザクションロックの詳細
トランザクションロックのリストで、[操作] 列の [詳細の表示] をクリックします。トランザクションロックの詳細は、次の 2 つのモードで表示されます:
リスト: ブロックされたトランザクションの詳細をリストで表示します。

ビュー: ロックの詳細を視覚的なトランザクション待ち関係グラフで表示します。セッションタイルをクリックすると、下部にセッションの詳細が表示されます。

メタデータロックの詳細
メタデータロックのリストで、[操作] 列の [詳細の表示] をクリックします。ビューでは、セッションタイルをクリックして下部にセッションの詳細を表示できます。関連するセッションを強制終了することもできます。
SQL Explorer と監査による複合分析
疑わしいセッションがスリープ状態にあり、SQL 情報が利用できない場合、そのセッションには、SQL 文が実行されたものの、トランザクションがコミットまたはロールバックされていないオープンなトランザクションがある可能性があります。この場合、宛先インスタンスの左側のナビゲーションウィンドウで、[SQL Explorer と監査] をクリックします。[監査] ページで、[高度なクエリを有効にする] をクリックし、疑わしいセッションのスレッド ID を入力して、実行された SQL 文をクエリおよび分析します。これにより、トランザクションがコミットされなかったためにロック待ちが発生しているかどうかを判断するのに役立ちます。
インスタンスセッションでの自動分析
手順
DAS コンソールにログインします。
左側のナビゲーションウィンドウで、[オペレーションセンター] > [インスタンスモニタリング] をクリックします。
ターゲットインスタンスを見つけ、インスタンス ID をクリックして、インスタンス詳細ページに移動します。
左側のナビゲーションウィンドウで、[インスタンスセッション] をクリックします。[セッションマネージャー] ページで、その他のロック分析が自動的にトリガーされ、分析結果がページの右上に表示されます。

[インスタンスセッション] ページで詳細を表示
[インスタンスセッション] ページで、ロック待ちが存在する場合は、[詳細の表示] をクリックします。表示されるパネルで、トランザクションロック (存在する場合) とメタデータロック (存在する場合) を表示できます。
トランザクションロックの詳細
トランザクションロックのリストで、[操作] 列の [詳細の表示] をクリックします。トランザクションロックの詳細は、リストまたはビューモードで表示できます。これらのモードは、トリガー分析で使用されるものと同じです。詳細については、「トリガー分析でのトランザクションロックの詳細」をご参照ください。

メタデータロックの詳細
メタデータロックのリストで、[操作] 列の [詳細の表示] をクリックします。メタデータロックの詳細は、ビューで表示できます。このビューは、トリガー分析で使用されるものと同じです。詳細については、「トリガー分析でのメタデータロックの詳細」をご参照ください。

[ロック分析] ページで詳細を表示
[ロック分析] ページで、診断結果の
アイコンをクリックして、[インスタンスセッション] ページで自動的にトリガーされたその他のロック分析の履歴統計を表示します。表示方法は、トリガー分析の場合と同じです。詳細については、「トリガー分析での詳細の表示」をご参照ください。