ApsaraDB RDS for MySQL インスタンスでデッドロックが発生した場合、ロック分析機能を使用して、最新のデッドロック、トランザクションブロッキング、メタデータロック待ちを視覚的に分析できます。これにより、デッドロックの根本原因を迅速に特定し、データベースの安定性を向上させることができます。
前提条件
インスタンスは、次のいずれかのエディションである必要があります。
RDS MySQL 8.4 High-availability Edition または Cluster Edition
RDS MySQL 8.0 High-availability Edition、Three-node Enterprise Edition、または Cluster Edition
RDS MySQL 5.7 High-availability Edition、Three-node Enterprise Edition、または Cluster Edition
RDS MySQL 5.6 High-availability Edition
RDS MySQL 5.5 High-availability Edition
インスタンスの基本情報ページで、タイプとエディションが 高可用性版、3ノードエンタープライズ版、またはクラスター版であり、データベースエンジン:が MySQL であることを確認します。
Basic Edition インスタンスはロック分析をサポートしていません。
機能
ロック分析機能は、データベースインスタンスにおけるデッドロック、トランザクションブロッキング、メタデータロック待ちの多次元分析を提供します。
[全量デッドロック分析] および [その他のロック分析] 機能には、特定のリージョンでのみ利用可能な DAS Professional Edition または DAS Enterprise Edition が必要です。詳細については、「異なる DAS エディションでサポートされるデータベースとリージョン」をご参照ください。DAS Professional Edition または DAS Enterprise Edition を有効にするには、「DAS 監査ログと O&M サービス (旧称 Professional Edition) の管理」をご参照ください。
最新のデッドロック分析:DAS は、
SHOW ENGINE INNODB STATUSコマンドが返す最新のデッドロックログを分析します。全量デッドロック分析:DAS は定期的にエラーログをスキャンしてデッドロック情報を解析し、包括的に分析します。指定した期間内のデッドロックの傾向と各デッドロックの詳細を表示することもできます。
その他のロック分析:DAS は
information_schemaとperformance_schemaのデータを使用して、データベースインスタンスの現在のセッションにおけるメタデータロックとトランザクションブロッキングをリアルタイムで分析します。メタデータロック分析:DAS は
information_schema.processlistなどのテーブルのデータからロック待ち関係を推測し、その関係をグラフとして視覚化します。トランザクションブロッキング分析: DAS はトランザクションのブロッキング関係を分析し、グラフとして視覚化します。この分析では、
information_schema.processlist、information_schema.innodb_trx、およびinformation_schema.innodb_lock_waits(MySQL 5.6 および 5.7 の場合) またはperformance_schema.data_lock_waits(MySQL 8.0 の場合) のデータが使用されます。
インスタンスパラメーターの要件
ロック分析機能を使用するには、対象のデータベースインスタンスに必要なパラメーターを設定する必要があります。
機能 | 必須パラメーター |
最新のデッドロック分析 |
|
全量デッドロック分析 |
|
[その他のロック分析] における [トランザクションブロッキング分析] | RDS MySQL 8.0 インスタンスでは、 |
インスタンスパラメーターを変更するには、「インスタンスパラメーターの設定」をご参照ください。
注意事項
"TOO DEEP OR LONG SEARCH IN THE LOCK TABLE WAITS-FOR GRAPH, WE WILL ROLL BACK FOLLOWING TRANSACTION" という記述が含まれるデッドロックの分析は、現在サポートされていません。
手順
RDS インスタンスリストページに移動し、上部でリージョンを選択し、対象インスタンスの ID をクリックします。
左側のナビゲーションウィンドウで、自律型サービス > ワンクリック診断 を選択します。
ロック分析 タブをクリックします。
ロック分析 ページで、左側のペインの[分析の作成]をクリックします。
(オプション) デッドロックが検出された場合、診断リストで新しいエントリを見つけ、詳細 列の 詳細を表示する をクリックします。
ロック分析 ページで、データベースインスタンスの最近のデッドロックを表示および診断できます。
最新のデッドロック分析
[最終デッドロック分析] タブで、[分析の作成] をクリックして、
SHOW ENGINE INNODB STATUSコマンドから最新のデッドロックログを分析します。診断結果を表示する時間範囲を選択します。結果の 詳細 列で 詳細を表示する をクリックすると、詳細な診断レポートが表示されます。
全量デッドロック分析
[完全なデッドロック分析] タブでは、指定した時間範囲におけるデッドロックの傾向と各デッドロックの詳細を確認できます。
その他のロック分析
[その他のロック分析] タブで、[分析を作成] をクリックします。 DAS は
information_schemaとperformance_schemaのデータに基づいて、データベースインスタンスの現在のセッションにおけるメタデータロックとトランザクションブロッキングをリアルタイムで分析します。期間を選択して診断結果を表示できます。
診断結果エントリの横にある
アイコンをクリックすると、ロック分析の統計が表示されます。統計の操作列で、詳細を表示するをクリックすると、詳細な診断レポートとロック分析グラフを表示できます。
グラフ内のセッションにカーソルを合わせると、そのロック待ち関係が表示されます。セッションをクリックすると、その詳細が表示されます。
次のステップ
データベースインスタンスでデッドロックが発生した場合、SQL Explorer と監査でトランザクションスレッド ID などのロック分析からの情報を使用して、関連するトランザクションの実行を分析し、デッドロックの根本原因を特定してください。たとえば、トランザクションが開始されて多数のデータ行が更新されると、それらの行はロックされます。トランザクションがコミットもロールバックもされずに (暗黙的なコミットとロールバックを含む) 長時間開いたままである場合、同じ行を更新しようとする後続のセッションまたはトランザクションは LOCK WAIT 状態になります。