Database Autonomy Service (DAS) は、データベース内のデッドロック、トランザクションブロック、およびメタデータロック待機を表示および分析できるロック分析機能を提供します。 これにより、ロック待機の問題を簡単に特定してトラブルシューティングし、データベースの安定性を確保できます。
前提条件
データベースインスタンスは、次のいずれかのデータベースエンジンを実行します。
ApsaraDB RDS for MySQL
自己管理型 MySQL データベース
PolarDB for MySQL
PolarDB-Xの2.0
データベースインスタンスがDASに接続されており、正常なアクセス 状態です。 詳細については、「データベースインスタンスのDASへの接続」をご参照ください。
注意事項
デッドロック分析機能を使用して、次の情報を含むデッドロックを分析することはできません。LOCK TABLE WAITSのDEEPまたはLONG SEARCH-GRAPHの場合、トランザクションに続いてロールバックします。
機能
ロック分析機能を使用すると、データベースインスタンスのデッドロック、トランザクションブロック、およびメタデータロック待機に対して多次元分析を実行できます。
完全デッドロック分析およびその他のロック分析機能は、ApsaraDB RDS for MySQLインスタンスおよびPolarDB for MySQLクラスターでのみサポートされます。 データベースインスタンスにこれらの機能を使用するには、データベースインスタンスに対してDAS Economy EditionまたはDAS Enterprise Editionを有効にする必要があります。 DAS Economy EditionおよびDAS Enterprise Editionは、特定のリージョンでのみ使用できます。 詳細については、「エディションとサポートされている機能」トピックのサポートされているデータベースとリージョンセクションをご参照ください。 DAS Economy EditionまたはDAS Enterprise Editionを有効にする方法の詳細については、「DAS Economy EditionおよびDAS Enterprise Editionの有効化と管理」トピックのDAS Economy 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を実行するデータベースインスタンスに使用され、information_schema.innodb_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: クラスターとノードパラメーターの設定
関連ドキュメント
次に何をすべきか
データベースインスタンスでデッドロックまたはトランザクションブロックが発生した場合、ロック分析後に取得したスレッドIDなどの情報を使用して、[SQL Explorerおよび監査] ページで関連トランザクションの実行を分析できます。 これは、ロック待機の原因を特定するのに役立ちます。 たとえば、トランザクションが開始され、特定のデータ行が更新された後、データ行はロックされます。 トランザクションの実行が長期間継続し、トランザクションが明示的または暗黙的にコミットまたはロールバックされていない場合、同じデータ行を更新する後続のセッションまたはトランザクションはLOCK WAIT状態になります。