データベースでデッドロックが発生した場合、ロック分析機能を使用してデッドロック情報を表示および分析できます。これにより、問題を迅速に特定して解決し、安定したデータベース運用を確保できます。
前提条件
ターゲットデータベースエンジンは PolarDB for MySQL です。
ターゲットデータベースインスタンスが Database Autonomy Service (DAS) に接続されており、その接続ステータスが 正常なアクセス であること。詳細については、「データベースインスタンスを DAS に接続する」をご参照ください。
機能の説明
ロック分析機能を使用すると、データベースインスタンスに対して多次元デッドロック分析を実行できます。
完全なデッドロック分析およびその他のロック分析機能を使用するには、DAS の Alibaba Cloud Managed Services (旧 Economy Edition) を有効にする必要があります。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、および MySQL 5.6 と 5.7 の場合はinformation_schema.innodb_lock_waits、MySQL 8.0 の場合はperformance_schema.data_lock_waitsのデータに基づいて、トランザクションブロッキング関係を分析し、対応する関係グラフを生成します。
データベースインスタンスのパラメーター制限
ロック分析機能を使用するには、ターゲットデータベースインスタンスに対応するパラメーターを設定する必要があります。
ロック分析機能 | 必須のデータベースインスタンスパラメーター |
最近のデッドロック分析 |
|
完全なデッドロック分析 |
|
その他のロック分析のトランザクションブロッキング分析 | PolarDB for MySQL 8.0 インスタンスの場合、 |
データベースインスタンスのパラメーターを変更するには、「クラスターとノードのパラメーターを設定する」をご参照ください。
注意事項
デッドロック分析機能は、次の情報を含むデッドロックの分析には使用できません: TOO DEEP OR LONG SEARCH IN THE LOCK TABLE WAITS-FOR GRAPH, WE WILL ROLL BACK FOLLOWING TRANSACTION。
手順
DAS コンソールにログインします。
左側のナビゲーションウィンドウで、[オペレーションセンター] > [インスタンスモニタリング] をクリックします。
ターゲットインスタンスを見つけ、インスタンス ID をクリックして、インスタンス詳細ページに移動します。
左側のナビゲーションウィンドウで、ロック分析 をクリックします。
ロック分析 ページで、データベースインスタンスの最近のデッドロックを診断します。
最近のデッドロック分析
[最近のデッドロック分析] タブで、[分析の作成] をクリックします。DAS は、
SHOW ENGINE INNODB STATUS文の出力から最新のデッドロックログを分析します。時間範囲を選択して、その期間のデッドロック診断結果を表示します。診断結果の [詳細] 列で、[詳細の表示] をクリックして詳細を表示します。
完全なデッドロック分析
[完全なデッドロック分析] タブで、指定した時間範囲内のデッドロックの傾向と各デッドロックの詳細を表示します。
その他のロック分析
[その他のロック分析] タブで、[分析の作成] をクリックします。DAS は、
information_schemaおよびperformance_schemaのデータを使用して、現在のデータベースインスタンスセッションのメタデータロックとトランザクションブロックをリアルタイムで分析します。時間範囲を選択して、その期間の診断結果を表示します。
診断結果の横にある
アイコンをクリックして、ロック分析統計を表示します。[操作] 列で [詳細の表示] をクリックして、詳細な診断結果とロック分析関係グラフを表示します。
セッションにカーソルを合わせると、関連するロック待ち関係が表示されます。セッションをクリックすると、その詳細が表示されます。
次のステップ
データベースインスタンスでデッドロックまたはトランザクションブロッキングが発生した場合、ロック分析後に取得したスレッド ID などの情報を使用して、SQL エクスプローラーと監査 ページで関連トランザクションの実行を分析できます。これは、ロック待ちの原因を特定するのに役立ちます。たとえば、トランザクションが開始され、特定のデータ行が更新されると、そのデータ行はロックされます。トランザクションの実行が長時間続き、トランザクションが明示的または暗黙的にコミットまたはロールバックされない場合、同じデータ行を更新する後続のセッションまたはトランザクションは LOCK WAIT 状態になります。