ApsaraDB RDS for MySQLインスタンスがロックされている場合、デッドロック分析機能を使用して、RDSインスタンスの最新のデッドロック、トランザクションブロック、およびメタデータロックを表示および分析できます。 デッドロック分析機能は、デッドロックの問題を効率的に特定して解決するのに役立ち、RDSインスタンスの安定性を保証します。
前提条件
RDSインスタンスは、次のMySQLバージョンとRDSエディションのいずれかを実行します。
RDS High-availability Edition、RDS Enterprise Edition、RDS Cluster EditionのMySQL 8.0
RDS High-availability Edition、RDS Enterprise Edition、RDS Cluster EditionのMySQL 5.7
RDS High-availability EditionのMySQL 5.6
RDS High-availability EditionのMySQL 5.5
RDSインスタンスのバージョンは、ApsaraDB RDSコンソールの [基本情報] ページで確認できます。 デッドロック分析機能を使用するには、Type and editionで示されるインスタンスエディションがHigh-availability Edition、Enterprise Edition、またはCluster Editionであり、データベースエンジンの値がMySQLバージョンである必要があります。
デッドロック分析機能は、RDS Basic Editionインスタンスではサポートされていません。
機能の説明
デッドロック分析機能を使用すると、RDSインスタンスのデッドロック、トランザクションブロック、およびメタデータロックに対して多次元分析を実行できます。
RDSインスタンスの完全デッドロック分析およびその他のデッドロック分析機能を有効にする場合は、Database Autonomy Service (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
のデータに基づいて、RDSインスタンスの現在のセッションのメタデータロックとトランザクションブロックをリアルタイムで分析します。メタデータロック分析: 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に使用され、information_schema.innodb_lock_waitsパラメーターはMySQL 8.0に使用されます。
制限事項
デッドロック分析機能のさまざまな機能を使用するには、必要なパラメーターを設定する必要があります。
機能 | 必須パラメーター |
最近のデッドロック分析 |
|
完全なデッドロック分析 |
|
その他のロック分析でのトランザクションブロック分析 | RDSインスタンスがMySQL 8.0を実行している場合は、 |
RDSインスタンスのパラメーターを変更する方法の詳細については、「インスタンスパラメーターの変更」をご参照ください。
使用上の注意
デッドロック分析機能を使用して、次の情報を含むデッドロックを分析することはできません。LOCK TABLE WAITSのDEEPまたはLONG SEARCH-GRAPHの場合、トランザクションに続いてロールバックします。
手順
[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
左側のナビゲーションウィンドウで、自律型サービス (CloudDBA)>ワンクリック診断を選択します。
デッドロック分析タブをクリックします。
デッドロック分析タブで、左上隅にある診断をクリックします。。
生成されたデッドロックエントリを見つけて、詳細列で詳細を表示をクリックします。
デッドロック分析ページで、RDSインスタンスの最新のデッドロックを表示または診断します。
最近のデッドロック分析
[最近のデッドロック分析] タブで、[分析タスクの作成] をクリックします。 DASは、
SHOW ENGINE INNODB STATUS
ステートメントの出力に表示される最新のデッドロックログに基づいて分析タスクを実行します。診断結果を表示する時間範囲を指定します。 タスクを見つけ、[詳細] 列の [詳細の表示] をクリックして、診断結果の詳細を表示します。
完全なデッドロック分析
[完全デッドロック分析] タブで、指定した時間範囲内の各デッドロックのデッドロックの傾向と詳細を表示します。
その他のデッドロック分析
[その他のデッドロック分析] タブで、[分析タスクの作成] をクリックします。 DASは、
information_schema
とperformance_schema
のデータに基づいて、RDSインスタンスの現在のセッションのメタデータロックとトランザクションブロックをリアルタイムで分析します。診断結果を表示する時間範囲を指定します。
統計を表示するには、診断結果の左側にあるアイコンをクリックします。
[操作] 列の [詳細の表示] をクリックして、診断結果の詳細とデッドロック分析図を表示します。
セッションの上にポインターを移動すると、セッションのロック待機ダイアグラムを表示できます。 セッションをクリックして、セッションの詳細を表示できます。
次に何をすべきか
RDSインスタンスでデッドロックが発生した場合、デッドロック分析後に取得したスレッドIDなどの情報を使用して、[SQL Explorerおよび監査] ページで関連するトランザクションの実行を分析できます。 これは、デッドロックの原因を特定するのに役立ちます。 たとえば、トランザクションが開始され、特定のデータ行が更新された後、データ行はロックされます。 トランザクションの実行が長期間続き、トランザクションが明示的または暗黙的にコミットまたはロールバックされていない場合、同じデータ行が更新されると、後続のセッションまたはトランザクションはLOCK WAIT状態になります。