機能の適用範囲
現在、コミュニティ版OCPはデッドロック検出機能をサポートしていません。
OceanBaseは分散デッドロックの自動検出機能をサポートしています。クラスタの分散デッドロック自動検出機能のスイッチをオンにすると、OceanBaseはデッドロックを自動的に検出し、解決できます。ユーザーはSQLがスローした例外情報に基づいて、トランザクションをコミットするかロールバックするかを決定する必要があります。
分散デッドロック自動検出機能は、トランザクションのタイムアウト時間を利用してデッドロックを処理する方法に比べて、以下の利点があります:
OceanBaseはデッドロックを迅速に検出・解決できるため、業務上のデッドロックがシステムパフォーマンスに与える影響を軽減します。
ユーザーは過去7日間に発生したデッドロックおよび対応する実行SQLを確認できるため、業務ロジックを最適化し、デッドロックの発生を回避できます。
ユーザーはOCPからデッドロック関連情報を取得できます。詳細については、公式ドキュメントデッドロック分析の表示、デッドロック自動検出の有効化、デッドロック自動検出の無効化を参照してください。
また、業務ニーズに応じて、以下のDBA_OB_deadLOCK_EVENT_HISTORYまたは.CDB_OB_DEADLOCK_EVENT_HISTORYビューをクエリすることで、発生したすべてのデッドロックイベントおよびそれらのイベントに関与したトランザクションを取得できます。さらに、あるデッドロックイベント内でどのトランザクションが最終的にキルされたかも確認できます。例:
obclient> select * from oceanbase.DBA_OB_DEADLOCK_EVENT_HISTORY;
obclient> select * from oceanbase.CDB_OB_DEADLOCK_EVENT_HISTORY;