応用情報暗記無料で始める

待ちグラフとは?まちグラフ

待ちグラフとは、トランザクションを節点、「TiがTjの保持するロックの解放を待っている」関係を有向辺として表した有向グラフ。閉路が存在することとデッドロックの発生が同値になるため、DBMSは定期的に閉路を探し、見つかったら1つを犠牲者として選びロールバックさせる。検出方式のデッドロック対策を支える表現である。

最終更新:2026-10-06

試験情報

応用情報技術者試験の過去問では1回出題されています。

応用情報技術者試験の頻出用語/テクノロジ系

別名:待ちグラフ法、wait-for graph

この語が出る過去問を解く →

背景

互いのロックを待ち合う状態は、待っている側からは「相手が遅い」ようにしか見えず、放置すれば永久に進まない。ロックを取る順序を全体で決めれば予防できるが、SQLを書く全員に順序を守らせるのは現実には難しい。そこで待ちの関係を素直に記録し、閉路の有無だけを機械的に判定する方式が採られた。応用情報では検出と予防の区別を問う形で出る。

具体例

PostgreSQLは deadlock_timeout(既定1秒)を超えた待ちを見つけると待ちグラフを組み立て、閉路を検出した時点で片方のトランザクションを中断してエラーを返す。T1→T2→T3→T1という閉路であれば、どれか1つをロールバックすれば辺が消え、残りは処理を続けられる。

試験での引っ掛け

待ちグラフはデッドロックの検出であって予防ではない。予防側はwait-die/wound-waitのようなタイムスタンプ方式や、資源への一方向の順序付けで、そもそも閉路を作らせない。辺があるだけでは単なる待ちであり、閉路になって初めてデッドロックである点も取り違えやすい。

関連用語

出た過去問

解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。

この語が出る過去問を解く →

試験での特徴
  • 試験では1回出題
  • 分野:テクノロジ系
  • 待ちグラフはデッドロックの検出であって予防ではない。