障害回復でのロールフォワードとロールバック
出典: 平成28年度 秋期 応用情報技術者試験 午前 問30 (IPA)
DBMS をシステム障害発生後に再立上げするとき,ロールフォワードすべきトランザクションとロールバックすべきトランザクションの組合せとして,適切なものはどれか。ここで,トランザクションの中で実行される処理内容は次のとおりとする。
| トランザクション | データベースに対する Read 回数と Write 回数 |
|---|---|
| T1,T2 | Read 10,Write 20 |
| T3,T4 | Read 100 |
| T5,T6 | Read 20,Write 10 |

- ア ロールフォワード: T2,T5,ロールバック: T6
- イ ロールフォワード: T2,T5,ロールバック: T3,T6
- ウ ロールフォワード: T1,T2,T5,ロールバック: T6
- エ ロールフォワード: T1,T2,T5,ロールバック: T3,T6
正解と解説を見る
正解: ア
- ア: チェックポイント後にコミットした T2、T5 をロールフォワードし、未コミットで更新した T6 をロールバックするので正しい組合せです。
- イ: T3 は Read だけで更新をしていないので、ロールバックの必要はありません。
- ウ: T1 はチェックポイントより前にコミットしていて、更新はデータベースに反映済みなので、ロールフォワードの必要はありません。
- エ: T1 はロールフォワード不要、T3 は Read だけなのでロールバック不要です。
ポイント
- チェックポイントの時点で、それまでの更新はデータベースに書き出されています。
- ロールフォワード: チェックポイントの 後にコミット したトランザクションの更新を、ログを使ってやり直します。→ T2、T5
・T1 はチェックポイント前にコミット済みなので不要です。 - ロールバック: 障害時点で コミットしていない トランザクションのうち、更新 (Write) をしたものを取り消します。→ T6
・T3、T4 は Read だけでデータベースを更新していないので、取り消すものがありません。