Database Autonomy Service (DAS) は、データベース内のデッドロック、トランザクションブロック、およびメタデータロックを表示および分析できるロック分析機能を提供します。 これにより、ロックの問題を簡単に特定してトラブルシューティングし、データベースの安定性を確保できます。
前提条件
データベースインスタンスは、次のいずれかのデータベースエンジンを実行します。
ApsaraDB RDS for MySQL
自己管理MySQL
PolarDB for MySQL
PolarDB-Xの2.0
データベースインスタンスがDASに接続されており、正常なアクセス 状態です。 詳細については、「データベースインスタンスのDASへの接続」をご参照ください。
機能
ロック分析機能を使用すると、データベースインスタンスのデッドロック、トランザクションブロック、およびメタデータロックに対して多次元分析を実行できます。
完全デッドロック分析およびその他のロック分析機能は、ApsaraDB RDS for MySQLおよびPolarDB for MySQLインスタンスでのみサポートされます。 データベースインスタンスにこれらの機能を使用するには、データベースインスタンスに対してDAS Cost-efficient EditionまたはDAS Enterprise Editionを有効化する必要があります。 DAS Cost-efficient EditionおよびDAS Enterprise Editionは、特定のリージョンでのみ使用できます。 詳細については、「エディションとサポートされている機能」トピックのエディションの比較セクションをご参照ください。 DAS Cost-efficient EditionまたはDAS Enterprise Editionを有効化する方法の詳細については、「DAS Cost-efficient EditionおよびDAS Enterprise Editionの有効化と管理」トピックのDAS Cost-efficient EditionおよびDAS Enterprise Editionの有効化セクションを参照してください。
最近のデッドロック分析: DASは、
SHOW ENGINE INNODB STATUS
ステートメントの返された結果に含まれる最新のデッドロックログを分析します。 複数のデッドロックが発生した場合、DASは最新のデッドロックのみを分析します。完全デッドロック分析: DASは定期的にエラーログを分析し、デッドロック情報を解析してから、包括的なデッドロック分析を実行します。 DASでは、特定の時間範囲内のデッドロックの傾向を表示したり、各デッドロックの詳細を表示したりすることもできます。
その他のロック分析: DASは、
information_schema
およびperformance_schema
データベースのデータに基づいて、データベースインスタンスの現在のセッションのメタデータロックとブロックされたトランザクションをリアルタイムで分析します。メタデータロック分析: DASは、ロック待機関係を推定し、
information_schema.processlist
テーブルなどのテーブル内のデータに基づいて対応するダイアグラムを生成します。トランザクションブロック分析: DASはトランザクションブロック関係を分析し、
information_schema.processlist
、information_schema.innodb_trx
、およびinformation_schema.innodb_lock_waits
またはperformance_schema.data_lock_waits
テーブルのデータに基づいて対応するダイアグラムを生成します。 information_schema.innodb_lock_waitsテーブルのデータはMySQL 5.6またはMySQL 5.7を実行するデータベースインスタンスに使用され、performance_schema.data_lock_waitsテーブルのデータはMySQL 8.0を実行するデータベースインスタンスに使用されます。説明トランザクションブロック分析機能は、MySQL 5.6を実行するPolarDB for MySQLクラスターをサポートしていません。
パラメーター設定
データベースインスタンスにロック分析機能を使用するには、データベースインスタンスの対応するパラメーターを指定する必要があります。 次の表に、さまざまなロック解析機能に必要なパラメーター設定を示します。
ロック分析機能 | 必須パラメーター設定 |
最近のデッドロック分析 |
|
完全なデッドロック分析 |
|
他のロック分析でのトランザクションブロック分析 | データベースインスタンスがApsaraDB RDS for MySQL 8.0インスタンスまたはPolarDB for MySQL 8.0クラスターの場合、 |
データベースインスタンスのパラメーターを変更する方法の詳細については、データベースインスタンスのデータベースエンジンに基づいて次のいずれかのトピックを参照してください。
ApsaraDB RDS for MySQL: インスタンスパラメーターの変更
PolarDB for MySQL: クラスターとノードパラメーターの設定
使用上の注意
ロック分析機能は、次の情報を含むデッドロックを分析するために使用することはできません。ロックテーブルの支払いでの深すぎまたは長期の検索-グラフの場合、トランザクションに続いてロールバックします。
手順
DASコンソールにログインします。
左側のナビゲーションウィンドウで、インスタンスモニターをクリックします。
表示されるページで、管理するデータベースインスタンスを見つけ、インスタンスIDをクリックします。 インスタンス詳細ページが表示されます。
インスタンスの詳細ページの左側のナビゲーションウィンドウで、デッドロック分析をクリックします。
デッドロック分析タブで、検出されたデッドロックを表示または診断します。
最近のデッドロック分析
[最近のデッドロック分析] タブで、[分析タスクの作成] をクリックします。 DASは、
SHOW ENGINE INNODB STATUS
ステートメントの返された結果に含まれる最新のデッドロックログを分析します。時間範囲を指定して、指定した時間範囲内の診断結果を表示します。 タスクを見つけ、[詳細] 列の [詳細の表示] をクリックして、診断結果の詳細を表示します。
完全なデッドロック分析
[完全デッドロック分析] タブで、デッドロックの傾向と、指定された時間範囲内の各デッドロックの詳細を表示します。
その他のデッドロック分析
[その他のデッドロック分析] セクションで、[分析タスクの作成] をクリックします。 DASは、
information_schema
データベースとperformance_schema
データベースのデータに基づいて、データベースインスタンスの現在のセッションのメタデータロックとブロックされたトランザクションをリアルタイムで分析します。時間範囲を指定して、指定した時間範囲内の診断結果を表示します。
統計を表示するには、診断結果の左側にあるアイコンをクリックします。
[操作] 列の [詳細の表示] をクリックして、診断結果の詳細とロック分析図を表示します。
セッションの上にポインターを移動します。 セッションのロック待機ダイアグラムを表示できます。 セッションをクリックして、セッションの詳細を表示します。
次に何をすべきか
データベースインスタンスでデッドロックが発生した場合、ロック分析機能を使用して取得した情報 (トランザクションのスレッドIDなど) を使用して、[SQLエクスプローラー] タブでトランザクションを分析できます。 これは、デッドロックの原因を特定するのに役立ちます。 たとえば、トランザクションが開始され、特定のデータ行が更新された後、データ行はロックされます。 トランザクションの実行が長期間継続し、トランザクションが明示的または暗黙的にコミットまたはロールバックされていない場合、同じデータ行を更新する後続のセッションまたはトランザクションはLOCK WAIT状態になります。