データベースでロック待ちの問題が発生した場合、ロック分析機能を使用して、デッドロック、トランザクションブロッキング、メタデータロック待ちを視覚的に分析できます。この機能は、これらの問題を迅速に特定して解決し、データベースの安定性を確保するのに役立ちます。
前提条件
ターゲットデータベースは、次のいずれかのデータベースエンジンを実行します。
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 (旧エコノミー版) を有効にする必要があります。Alibaba Cloud Managed Services (旧エコノミー版) は特定のリージョンでのみ利用可能であることに注意してください。詳細については、「サポートされているデータベースとリージョン」をご参照ください。このサービスを有効にするには、「Alibaba Cloud Managed Services (旧エコノミー版) の管理」をご参照ください。
最近のデッドロック分析: 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 状態になります。