このトピックでは、Database Autonomy Service (DAS) のロック分析機能を使用してデータベースのデッドロックを分析する方法について説明します。デッドロック分析には、最近のデッドロック分析と完全なデッドロック分析が含まれます。
このトピックでは、図に示されているデータはテストデータとして使用されており、参考用です。実際のシナリオでは、スレッド ID や SQL 文などのパラメーターは、実際のデータベース環境によって異なります。
前提条件
データベースインスタンスは、次のデータベースエンジンのいずれかを実行しています。
最近のデッドロック分析:
ApsaraDB RDS for MySQL
セルフマネージド MySQL データベース
PolarDB for MySQL
PolarDB-X 2.0
完全なデッドロック分析:
ApsaraDB RDS for MySQL
PolarDB for MySQL
データベースインスタンスは DAS に接続されており、正常なアクセス 状態です。詳細については、「DAS にデータベースインスタンスを接続する」をご参照ください。
DAS Economy Edition または DAS Enterprise Edition が有効になっています。
重要DAS Economy Edition と DAS Enterprise Edition は、特定のリージョンでのみ利用可能です。詳細については、「DAS エディションとサポートされている機能」トピックの「サポートされているデータベースとリージョン」セクションをご参照ください。
DAS Economy Edition または DAS Enterprise Edition を有効にする方法の詳細については、「DAS Economy Edition と DAS Enterprise Edition を有効化および管理する」トピックの「DAS Economy Edition と DAS Enterprise Edition を有効化および管理する」セクションをご参照ください。
最近のデッドロック分析
パラメーター設定:
innodb_deadlock_detect
パラメーターを ON に設定する必要があります。説明デフォルトでは、
innodb_deadlock_detect
パラメーターは ON に設定されています。SHOW VARIABLES LIKE 'innodb_deadlock_detect'
文を実行して、パラメーター設定を確認できます。このパラメーターは、特定のデータベースインスタンスに対して変更することはできません。データベースインスタンスのパラメーターを変更する方法の詳細については、データベースインスタンスのデータベースエンジンに基づいて、次のいずれかのトピックをご参照ください。
ApsaraDB RDS for MySQL: インスタンスパラメーターの変更
PolarDB for MySQL: クラスターパラメーターとノードパラメーターの設定
データ分析: DAS は、
SHOW ENGINE INNODB STATUS
文の出力にある最新のデッドロックログを分析します。
複数のデッドロックが発生した場合、DAS は最新のデッドロックのみを分析し、デッドロックデータを保持します。
手順
DAS コンソール にログインします。
左側のナビゲーションウィンドウで、[インテリジェント O&M センター] > インスタンスモニター を選択します。
表示されるページで、管理するデータベースインスタンスを見つけ、インスタンス ID をクリックします。インスタンスの詳細ページが表示されます。
左側のナビゲーションウィンドウで、ロック分析最近のデッドロック分析 をクリックします。[ロック分析] ページで、 タブをクリックします。
次に、分析タスクの作成 をクリックして、最新のデッドロックを分析します。
詳細の表示
デッドロック分析結果を表示する期間を指定します。
[最近のデッドロック分析] タブで、分析タスクの [詳細] 列の 詳細の表示詳細
をクリックします。
次のいずれかの方法を使用して、デッドロックの詳細を表示できます。
表示: 視覚化されたデッドロック関係を使用してデッドロックの詳細を表示します。対応するトランザクションタイルをクリックして、下部にトランザクションの詳細を表示できます。
リスト: ロック保持トランザクションの詳細をリストで比較します。
ログ:
SHOW ENGINE INNODB STATUS
文の出力にある元のデッドロックログ (LATEST DETECTED DEADLOCK) を表示します。
SQL Explorer と Audit を使用したデッドロック分析
左側のナビゲーションウィンドウで、[SQL Explorer and Audit] をクリックします。[監査] タブで、[Enable Advanced Query] をクリックします。
デッドロックが発生した時間を含む期間を選択し、最近のデッドロック分析から特定されたスレッド ID を入力して、トランザクションによって実行された SQL 文をクエリします。
上記のサンプルのトランザクション 1
上記のサンプルのトランザクション 2 (ロールバック済み)
完全なデッドロック分析
パラメーター設定:
innodb_deadlock_detect
パラメーターとinnodb_print_all_deadlocks
パラメーターを ON に設定する必要があります。 ApsaraDB RDS for MySQL インスタンスを使用する場合は、log_error_verbosity
パラメーターを 3 に設定します。説明デフォルトでは、
innodb_deadlock_detect
パラメーターは ON に設定されています。SHOW VARIABLES LIKE 'innodb_deadlock_detect'
文を実行して、パラメーター設定を確認できます。このパラメーターは、特定のデータベースインスタンスに対して変更することはできません。データベースインスタンスのパラメーターを変更する方法の詳細については、データベースインスタンスのデータベースエンジンに基づいて、次のいずれかのトピックをご参照ください。
ApsaraDB RDS for MySQL: インスタンスパラメーターの変更
PolarDB for MySQL: クラスターパラメーターとノードパラメーターの設定
データ分析: DAS は、インスタンスエラーログに表示されるデッドロック情報を 1 時間ごとに解析し、デッドロック数の傾向と各デッドロックの詳細に関する統計を収集します。
クールダウン期間: インスタンスに対して DAS Economy Edition または DAS Enterprise Edition が有効になっているが、必要なパラメーターが無効になっている場合、インスタンスは 12 時間クールダウンされます。クールダウン期間中、DAS はデッドロック分析を実行しません。クールダウン期間中に必要なパラメーターを有効にすると、DAS はクールダウン期間後に分析タスクのスケジュールを再設定します。例:
11:12 にスケジュールされた分析タスクを持つインスタンスで必要なパラメーターが無効になっていることを DAS が検出した場合、タスクは 12 時間クールダウンされます。DAS は、インスタンスの完全なデッドロック分析タスクを 23:12 に再スケジュールします。最初のクールダウン期間後もパラメーターが無効になっている場合、スケジュールされたタスクはさらに 12 時間クールダウンされ続けます。 23:12 より前にパラメーターが有効になった場合、現在のクールダウン期間は 23:12 後に無効になります。その後、スケジュールされたタスクは、インスタンスのパラメーターが無効になるか、インスタンスの DAS Economy Edition または DAS Enterprise Edition が無効になるまで、1 時間ごとに完全なデッドロック分析を実行します。
完全なデッドロック分析機能を使用して、TOO DEEP OR LONG SEARCH IN THE LOCK TABLE WAITS-FOR GRAPH, WE WILL ROLL BACK FOLLOWING TRANSACTION という情報を含むデッドロックを分析することはできません。
手順
DAS コンソール にログインします。
左側のナビゲーションウィンドウで、[インテリジェント O&M センター] > インスタンスモニター を選択します。
表示されるページで、管理するデータベースインスタンスを見つけ、インスタンス ID をクリックします。インスタンスの詳細ページが表示されます。
左側のナビゲーションウィンドウで、ロック分析完全なデッドロック分析 をクリックします。[ロック分析] ページで、 タブをクリックします。
デッドロックの完全分析機能は、インスタンスのエラーログに表示されるデッドロック情報を1時間ごとに自動的に分析し、デッドロック数の統計を収集し、ページ上部に [デッドロックの傾向] チャートをプロットします。時間範囲を指定して、デッドロックの傾向を表示します。
詳細の表示
[フルデッドロック分析] タブで、デッドロック分析タスクの [詳細] 列の [詳細の表示] をクリックします。
表示、リスト、ログのいずれかの方法を使用して、デッドロックの詳細を表示できます。ログには、デッドロックエラー情報が含まれています。完全なデッドロック分析のビューとリストは、最近のデッドロック分析のビューとリストと同じ形式で表示されます。詳細については、このトピックの「最近のデッドロック分析」セクションの「詳細の表示」サブセクションをご参照ください。
SQL Explorer と Audit を使用したデッドロック分析
完全なデッドロック分析に SQL Explorer と Audit を使用する手順は、最近のデッドロック分析に SQL Explorer と Audit を使用する手順と同じです。詳細については、このトピックの「最近のデッドロック分析」セクションの「SQL Explorer と Audit を使用したデッドロック分析」サブセクションをご参照ください。