トランザクションの更新内容を終了直後の状態にする復旧技法|科目A-1(応用情報技術者) 令和6年 春期午前試験 問27
出典:令和6年春期 午前 問27
分野:データベース / トランザクション処理
トランザクションTはチェックポイント後にコミットしたが,その後にシステム障害が発生した。トランザクションTの更新内容をその終了直後の状態にするために用いられる復旧技法はどれか。ここで,トランザクションはWALプロトコルに従い,チェックポイントの他に,トランザクションログを利用する。
- ア:2相ロック
- イ:シャドウページ
- ウ:ロールバック
- エ:ロールフォワード
TSUNAGARU-ADVICE
まず押さえたいこと
チェックポイント後にコミット済みのトランザクションについて障害が発生した場合は、ログに記録された更新内容を再適用して、コミット直後の状態まで進める必要があります。このように更新内容を前方向へ再実行する復旧をロールフォワードと呼びます。
迷ったときの判断軸
ロールバックは、未コミットの更新を取り消して障害前の整合した状態に戻す処理です。一方、コミット済みなのにデータベースへ反映しきれていない更新を再適用するのがロールフォワードです。WALではログが先に永続化されるため、そのログを復旧に利用できます。
科目Bにつなげるために
特にプロフェッショナルデジタルスキル(データ・AI)試験合格を目指す方は、障害復旧をコミット済みならREDO、未コミットならUNDOという観点で整理しましょう。チェックポイント、WAL、トランザクションログを組み合わせた復旧設計の理解につながります。
トランザクションTはチェックポイント後にコミットしているため、Tの更新内容は確定済みです。その後にシステム障害が発生した場合は、障害によって主記憶上の更新内容が失われていても、トランザクションログを使って更新後の状態まで再実行する必要があります。
このように、更新後ログを使ってコミット済みの更新内容を再適用し、障害発生直前の状態へ戻す処理をロールフォワードといいます。
したがって、エが適切です。
❌他選択肢が誤りの理由ア:2相ロック
⇒2相ロックは、トランザクションの同時実行制御に用いる方式です。ロックを取得する段階と解放する段階を分けて、データの整合性を保ちます。障害発生後にデータを復旧する技法ではありません。
イ:シャドウページ
⇒シャドウページは、更新前のページを保持しながら別ページに更新内容を書き込むことで、障害時に更新前の状態へ戻せるようにする方式です。この問題ではWALプロトコルとトランザクションログを利用することが明示されているため、該当しません。
ウ:ロールバック
⇒ロールバックは、未コミットのトランザクションによる更新を取り消すために、更新前ログを使ってトランザクション開始前の状態へ戻す処理です。今回はTが既にコミット済みなので、更新内容を取り消すのではなく再適用するロールフォワードを行います。