すべてのプロダクト
Search
ドキュメントセンター

Database Autonomy Service:デッドロック分析

最終更新日:Dec 19, 2024

このトピックでは、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に設定する必要があります。

  • データ分析: DASは、SHOW ENGINE INNODB STATUSステートメントの出力にある最新のデッドロックログを分析します。

重要

複数のデッドロックが発生した場合、DASは最新のデッドロックのみを分析し、デッドロックデータを保持します。

手順

  1. にログインします。DASコンソール.

  2. 左側のナビゲーションウィンドウで、インスタンスモニター.

  3. 表示されるページで、管理するデータベースインスタンスを見つけ、インスタンスIDをクリックします。 インスタンス詳細ページが表示されます。

  4. 左側のナビゲーションウィンドウで、[ロック分析] をクリックします。 [ロック分析] ページで、[最近のデッドロック分析] タブをクリックします。

  5. 次に、[分析タスクの作成] をクリックして、最新のデッドロックを分析します。

    image.png

詳細を見る

  1. デッドロック分析結果を表示する時間範囲を指定します。

  2. [最近のデッドロック分析] タブで、分析タスクの [詳細] 列の [詳細の表示] をクリックします。 image.png

  3. 次のいずれかの方法を使用して、デッドロックの詳細を表示できます。

    • ビュー: 視覚化されたデッドロック関係を使用してデッドロックの詳細を表示します。 対応するトランザクションタイルをクリックすると、下部にトランザクションの詳細が表示されます。 image.png

    • List: リスト内のロック保持トランザクションの詳細を比較します。 image.png

    • ログ: SHOW ENGINE INNODB STATUSステートメントの出力に元のデッドロックログ (LATEST DETECTED deadlock) が表示されます。 image.png

SQL Explorerと監査を使用したデッドロック分析

  1. 左側のナビゲーションウィンドウで、[SQL Explorerと監査] をクリックします。 [監査] タブで、[詳細クエリの有効化] をクリックします。 image.png

  2. デッドロックが発生した時間をカバーする時間範囲を選択し、最近のデッドロック分析から識別されたスレッドIDを入力して、トランザクションによって実行されたSQL文を照会します。

    1. 前のサンプルimage.pngのトランザクション1

    2. 前のサンプルのトランザクション2 (ロールバック) image.png

完全なデッドロック分析

  • パラメーター設定: innodb_deadlock_detectおよびinnodb_print_all_deadlocksパラメーターをONに設定する必要があります。 ApsaraDB RDS for MySQLインスタンスを使用する場合は、log_error_verbosityパラメーターを3に設定します。

  • データ分析: 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時間ごとに完全なデッドロック分析を実行します。

重要

完全なデッドロック分析機能を使用して、次の情報が含まれているデッドロックを分析することはできません。LOCK TABLE WAITSのDEEPまたはLONG SEARCH-GRAPHの場合、トランザクション後にロールバックします。

手順

  1. にログインします。DASコンソール.

  2. 左側のナビゲーションウィンドウで、インスタンスモニター.

  3. 表示されるページで、管理するデータベースインスタンスを見つけ、インスタンスIDをクリックします。 インスタンス詳細ページが表示されます。

  4. 左側のナビゲーションウィンドウで、[ロック分析] をクリックします。 [ロック分析] ページで、[フルデッドロック分析] タブをクリックします。

  5. 完全デッドロック分析機能は、インスタンスエラーログに表示されるデッドロック情報を1時間ごとに自動的に分析し、デッドロックの数に関する統計を収集し、ページの上部にデッドロックトレンドチャートをプロットします。 デッドロックトレンドを表示する時間範囲を指定します。

    image.png

詳細を見る

  1. [フルデッドロック分析] タブで、デッドロック分析タスクの [詳細] 列の [詳細の表示] をクリックします。

    image.png

  2. デッドロックの詳細を表示するには、ビュー、リスト、ログのいずれかの方法を使用します。 ログにはデッドロックエラー情報が含まれています。 完全デッドロック分析のビューとリストは、最近のデッドロック分析のビューとリストと同じ形式で表示されます。 詳細については、このトピックの「最近のデッドロック分析」セクションの「詳細の表示」サブセクションを参照してください。 image

SQL Explorerと監査を使用したデッドロック分析

完全デッドロック分析にSQL ExplorerとAuditを使用する手順は、最近のデッドロック分析にSQL ExplorerとAuditを使用する手順と同じです。 詳細については、このトピックの「最近のデッドロック分析」セクションの「SQLエクスプローラーと監査を使用したデッドロック分析」サブセクションを参照してください。

関連ドキュメント