科目A-2(多肢選択式・四肢択一、25問)
DBMSがデッドロックを検出した場合の一般的な処理の流れとして、最も適切なものはどれか。
- Aすべての関係するトランザクションを即座にロールバックし、アプリケーションにエラーを返す
- Bデッドロックが解消されるまで、関係するすべてのトランザクションを一時停止し、タイムアウトを待つ
- Cデッドロックを検出した時点のログを取得し、システム管理者の手動判断でロールバック対象を決定する
- ✓デッドロックを構成するトランザクションのうち、ロールバックのコストが小さいものなど所定の基準で選んだ1つを犠牲者(victim)としてロールバックし、残りのトランザクションを続行させる
解説
デッドロックは循環待ちを解消しないと解決しないため、DBMSは待ちグラフなどでサイクルを検出し、あらかじめ定めた基準(ロールバックコストの小ささなど)で犠牲トランザクションを1つ選んでロールバックし、サイクルを断ち切る。他のトランザクションは通常継続される。
根拠シラバス「期待する技術水準」トランザクション管理・排他制御(ロック・デッドロック)