ロック分析機能を使用すると、データベース内のデッドロック、トランザクションブロッキング、メタデータロック待ちを視覚的に分析できます。ロック待ちの問題を迅速に特定して解決し、データベースの安定性を確保します。
前提条件
-
対象のデータベースが、以下のいずれかのデータベースエンジンを実行していること。
-
ApsaraDB RDS for MySQL
-
セルフマネージド MySQL
-
PolarDB for MySQL
-
PolarDB-X 2.0
-
-
対象のデータベースインスタンスが Database Autonomy Service (DAS) に接続されており、そのステータスが [正常なアクセス] であること。詳細については、「データベースインスタンスの DAS への接続」をご参照ください。
注意事項
デッドロック分析機能は、以下の説明を含むデッドロックの分析には使用できません: TOO DEEP OR LONG SEARCH IN THE LOCK TABLE WAITS-FOR GRAPH, WE WILL ROLL BACK FOLLOWING TRANSACTION
機能
ロック分析は、データベースインスタンスのデッドロック、トランザクションブロッキング、メタデータロック待ちに対応しています。
全量デッドロック分析 および その他のロック分析 機能は、ApsaraDB RDS for MySQL および PolarDB for MySQL データベースインスタンスでのみサポートされています。これらの機能を使用するには、Alibaba Cloud Managed Services (旧 Economy Edition) を有効にする必要があります。このサービスは特定のリージョンでのみ利用可能です。詳細については、「サポートされるデータベースとリージョン」をご参照ください。このサービスを有効にするには、「Alibaba Cloud Managed Services (旧 Economy 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(MySQL 5.6 および 5.7 の場合) またはperformance_schema.data_lock_waits(MySQL 8.0 の場合) のデータに基づいてトランザクションのブロッキング関係を分析し、対応するグラフを生成します。説明トランザクションブロッキング分析機能は、PolarDB for MySQL 5.6 インスタンスではサポートされていません。
-
データベースインスタンスのパラメーター制限
各ロック分析機能には、対象のデータベースインスタンスで特定のパラメーターが必要です。
|
ロック分析機能 |
関連するデータベースインスタンスのパラメーター |
|
最近のデッドロック分析 |
|
|
全量デッドロック分析 |
|
|
その他のロック分析におけるトランザクションブロッキング分析 |
ApsaraDB RDS for MySQL 8.0 インスタンスまたは PolarDB for MySQL 8.0 インスタンスの場合、 |
データベースインスタンスのパラメーターを変更するには:
-
ApsaraDB RDS for MySQL の場合、「インスタンスパラメーターの設定」をご参照ください。
-
PolarDB for MySQL の場合、「クラスターとノードのパラメーター設定」をご参照ください。
関連ドキュメント
次のステップ
デッドロックまたはトランザクションブロッキングが発生した場合、ロック分析から得られるスレッド ID を使用して、SQL Explorer と監査 で関連するトランザクションを追跡し、ロック待ちの原因を特定します。たとえば、トランザクションが多数のデータ行を更新した後、それらの行はロックされます。そのトランザクションが長時間コミットまたはロールバック (明示的または暗黙的に) されない場合、同じ行を更新しようとする後続のセッションやトランザクションは LOCK WAIT 状態になります。