問題
デッドロックの発生を検出したときの対処として適切なものはどれか。
選択肢
- 1ア 全トランザクションを強制終了する
- 2イ いずれかのトランザクションをロールバックして解消する
- 3ウ そのまま放置する
- 4エ データベースを再起動する
正解
2. イ いずれかのトランザクションをロールバックして解消する
詳しい解説を見る解説を閉じる
解説
デッドロックは、複数のトランザクションが互いに相手の確保した資源のロック解放を待ち合い、どちらも先へ進めなくなる状態である。検出した場合は、いずれか一方のトランザクションを犠牲として選んでロールバックし、確保していたロックを解放させることで残りを進行させる。よってイが正解である。ロールバックされた側は後で再実行すればよい。アの全トランザクション強制終了やエのデータベース再起動は影響範囲が過大であり、ウの放置では永久に解消しない。予防策として「複数の資源には常に同じ順序でロックをかける」方法が有名であり、デッドロックの発生条件・予防・検出と解消の3つの観点はデータベース分野で繰り返し問われる頻出テーマである。
一問一答
科目A 180問+科目B 60問