×
データベース
デッドロックを検出するための代表的なアルゴリズムは、リソースの所有関係とトランザクションの待ち状態をグラフ化した「待ちグラフ(Wait-For Graph:WFG)」を用いる手法です。このグラフにおいて、トランザクションをノード(頂点)、待ち関係をアーク(矢印)で表現し、グラフの中に「閉路(ループ)」が存在するかどうかを定期的に探索します。閉路が見つかった場合、デッドロックが発生していると判断します。検出後の回復フェーズでは、ループを構成するトランザクションの中から、処理の進捗が最も少ないものや、ロールバックのコストが低いものを「犠牲者(Victim)」として選択し、その処理を強制終了してコミット前の状態に戻すことでロックを解放させます。これにより、他のトランザクションが処理を再開できるようになり、システム全体のデッドロックが解消されます。

試験でのポイント