適用対象
現在、Community Editionの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;