第18章: OzLockTree - ロック競合リゾルバー
概要: この章では、ロック競合によるシステム停止時に依存ツリーを可視化し、根本ブロックプロセス(Root Blocker)を特定して解決する OzLockTree ツールの使い方を解説します。サーバー管理用ツールのため SQLite では利用できません。
本章の内容:
18.1 リアルタイム ロックツリー表示
OzLockTree は、データベース内のロック待機関係を解析し、視覚的なツリーテーブルとして展開します。
- Root Blocker(根本原因): 後続のクエリを玉突きで待機させている大元のセッションを赤色で強調表示。
- 待機中クエリ群: どのセッションが誰のロック解放を待っているかを階層構造で明示。
ヒント: 各行の関係サマリーを確認することで、デッドロックやリソース競合の発生源を一目で特定できます。
18.2 Kill Query と Kill Connection の違い
プロセス停止時には、状況に応じた2段階の安全な終了オプションを提供します。
- Kill Query(安全): ロックを保持している実行中 SQL のみを中断し、クライアントの接続セッション自体は維持します。
- Kill Connection(強制終了): 接続そのものをサーバーレベルで切断します。セッションがハングしている場合の最終手段です。
警告: まず Kill Query を試行し、問題が解消しない場合にのみ Kill Connection を検討してください。
18.3 長時間オープンな未コミットトランザクションの追跡
BEGIN を実行したまま COMMIT も ROLLBACK も発行されず放置された放置トランザクションは、ロック問題の代表例です。OzLockTree は、5分(300秒)以上開かれたままの未コミットセッションを検知して警告します。