情報処理試験を勉強していると、「ロールフォワードとロールバック、どっちがどっち?」と混乱しがちです。

この記事では、ロールフォワード(前進復帰)の意味と仕組みを日常の例え話と図解で整理し、試験で確実に得点できる状態を目指します。

対象試験と出題頻度

ロールフォワードは、基本情報技術者・応用情報技術者で出題されるテーマです。

DBMSの障害回復機能に関する問題として定番化しており、ロールバックとの違いを正確に区別できるかが問われます。

詳細をクリックして確認
対象試験:
基本情報技術者
応用情報技術者
出題頻度:
★★★★☆
ランクA(重要)必ず覚えておくべき

用語の定義

ロールフォワード(Roll Forward / 前進復帰)とは、一言で言うと

 「チェックポイントのバックアップデータに更新後ログを順番に適用し、障害発生直前の状態までデータベースを復旧する技法

のことです。

イメージとしては、ゲームのオートセーブ+リプレイです。

RPGで遊んでいたら突然フリーズした場面を想像してください。

オートセーブ地点(チェックポイント)のデータをロードし、そこからプレイログ(操作記録)を再生して、フリーズ直前の状態まで自動的に復元する。これがロールフォワードの考え方です。

📊 ロールフォワードの基本情報

項目 内容
英語名 Roll Forward
別名 前進復帰 / フォワードリカバリ
使用するログ 更新後ログ(アフターイメージ)
対になる技法 ロールバック(後退復帰)
主な適用場面 システム障害・媒体障害からの回復

解説

なぜロールフォワードが必要なのか

データベースは更新のたびにトランザクションログ(ジャーナル)を記録しています。

しかし、更新結果がディスクに書き込まれる前にシステムがダウンすると、コミット済みの処理であっても結果が失われます。

トランザクションには「一度正常終了した結果は障害後も失われてはならない」という永続性(Durability)が求められます。

この性質を保証するために、ログを使って処理を「前に進めて」再現する仕組みが必要になります。

回復処理の流れ

ロールフォワードは、以下の3ステップで実行されます。

ロールフォワードの3ステップ

1
チェックポイントのバックアップを読み込む
DBMSが定期的に取得していた整合性のある状態をディスクに復元する
2
更新後ログ(アフターイメージ)を順番に適用する
チェックポイント以降にコミットされたトランザクションの変更を再実行する
3
障害発生直前の状態に復旧完了
コミット済みのデータがすべて反映された状態になる

図解:チェックポイント・障害発生・トランザクションの関係

障害回復でどのトランザクションにロールフォワードが適用されるかを理解するには、タイムライン上の位置関係がカギです。

タイムラインとトランザクションの分類

🚩 CP
⚡ 障害発生
時間→
T1
開始 ── COMMIT
→ 処理不要
T2
開始 ─────────── 未コミット ✗
→ ロールバック
T3
開始 ── COMMIT
→ ロールフォワード
T4
開始 ─ │CP│ ─── COMMIT
→ ロールフォワード
CP前にコミット済(処理不要) CP後にコミット済(ロールフォワード対象) 障害時に未コミット(ロールバック対象)

※ T4はCP前に開始していますが、コミットがCP後のためロールフォワード対象です

▲ 判定基準は「コミットがチェックポイントの後か否か」。開始時点は関係ない

ポイントは「チェックポイント以降に正常にコミットされたが、障害で結果が失われたトランザクション」だけが対象になるという点です。

未コミットのトランザクションはロールバック(更新前ログで巻き戻す)の対象であり、処理の方向がまったく逆になります。

ロールバックとの比較

両者の違いを1つの表に整理します。ここだけは確実に押さえてください。

比較項目 ロールフォワード(前進復帰) ロールバック(後退復帰)
目的 コミット済みの処理結果を再現して復旧する 未コミットの処理を取り消してトランザクション開始前に戻す
使うログ 更新後ログ(アフターイメージ) 更新前ログ(ビフォーイメージ)
データの進む方向 前に進める(チェックポイント → 障害直前) 後ろに戻す(現在 → トランザクション開始前)
対象の障害 システム障害・媒体障害 トランザクション障害(プログラムバグ等)

では、この用語が試験でどのように出題されるか見ていきましょう。

💡 ロールフォワードの核心を3行で

・チェックポイントのバックアップに更新後ログを適用して障害直前の状態に復旧する技法
・対象は「チェックポイント以降にコミット済みだが障害で結果が失われた」トランザクション
・ロールバック(更新前ログで巻き戻す)と使うログ・方向・対象障害がすべて逆


試験ではこう出る!

ロールフォワードは、FE・APの午前問題でデータベースの障害回復分野として繰り返し出題されています。

出題パターンは大きく2つに分かれます。

📊 過去問での出題実績

試験回 出題内容 問われたポイント
AP R6春
午前 問27
チェックポイント取得後に完了したトランザクションの復旧技法を選ぶ問題。 ・ロールフォワードが正解
・2相ロック、ロールバックがひっかけ
AP R4秋
午前 問29
タイムライン図から前進復帰できるトランザクションを全て選ぶ問題。 ・チェックポイント後にコミット済みのトランザクションが対象
・未コミット分はロールバック対象
AP H22春
午前 問34
ロールフォワードの説明を4択から選ぶ問題。 ・「チェックポイント情報と更新後ログを使って回復する」が正解
・「更新前ログ」はロールバックの説明
FE H28秋
午前 問30
チェックポイント後完了トランザクションの復旧技法を選ぶ問題。 ・AP R6春 問27と同一構成の問題(FE/AP間で流用)
・シャドウページ法もひっかけ
FE H21春
午前 問35
上記H28秋 問30と同一構成の問題。 ・長年にわたり同じ問題パターンが再出題されている典型例

📝 IPA試験での出題パターン

パターン1:「復旧技法を選べ」
「チェックポイント取得後に完了したトランザクションを障害後に復旧する技法はどれか」と問う形式。選択肢に2相ロック・シャドウページ法・ロールバック・ロールフォワードが並ぶ。「更新後ログ」「前に進めて復旧」のキーワードに反応できれば即答できる。

 

パターン2:「対象トランザクションを選べ」
タイムライン図で複数のトランザクション(T1~T5など)が示され、前進復帰の対象を全て選ぶ形式。判定基準は「チェックポイント以降にコミットされたかどうか」だけ。チェックポイント前にコミット済みなら処理不要、障害時点で未コミットならロールバック対象として除外する。

 

試験ではここまででOKです。ジャーナルの物理構造やWAL(Write-Ahead Logging)プロトコルの詳細まで問われることはないので、深追いは不要です。


【確認テスト】理解度チェック

ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。


Q. データベースのシステム障害からの回復において、チェックポイント以降にコミット済みのトランザクションを再現するために使用するものとして、最も適切なものはどれか。

  • A. 更新前ログ(ビフォーイメージ)を使い、トランザクション開始前の状態に戻す。
  • B. ロックの取得と解除を2つのフェーズに分けて排他制御を行う。
  • C. 更新後ログ(アフターイメージ)を使い、障害発生直前の状態に復旧する。

正解と解説を見る

正解:C

解説:
ロールフォワードは、更新後ログを使ってコミット済みトランザクションの処理結果を再現し、障害発生直前の状態までデータベースを復旧する技法です。

選択肢Aはロールバック(後退復帰)の説明です。ロールバックは更新前ログを使って処理を取り消す操作であり、データを前に進めるロールフォワードとは方向が逆です。選択肢Bは2相ロック方式の説明です。これはトランザクションの同時実行制御に関する手法であり、障害回復とは目的が異なります。


よくある質問(FAQ)

Q. ロールフォワードはどの種類の障害に使われますか?

主にシステム障害(OS・DBMSのクラッシュなどでメモリ上のデータが消失する障害)と媒体障害(ディスク破損によりデータベースファイル自体が読み取れなくなる障害)に対して使われます。媒体障害の場合は、チェックポイントではなくフルバックアップからの復元が起点になり、そこに更新後ログを適用して回復します。

Q. チェックポイントとバックアップは何が違いますか?

チェックポイントは、DBMSがメモリ上の更新内容をディスクに一括書き出しする「同期処理」です。データベースファイル自体は上書きされるため、別のコピーが作られるわけではありません。一方、バックアップはデータベースファイルの複製を別の媒体に保存する行為です。システム障害ではチェックポイント+ログで復旧でき、ディスクが壊れる媒体障害ではバックアップ+ログが必要になります。

Q. ロールフォワードとロールバックの両方が同時に行われることはありますか?

あります。システム障害から復旧する際、チェックポイント以降にコミット済みのトランザクションにはロールフォワードを行い、障害時点で未コミットのトランザクションにはロールバックを行います。AP R4秋 午前問29で出題されたタイムライン問題がまさにこのケースで、T4・T5にロールフォワード、T2・T3にロールバックが適用される構成でした。

Q. 実務のRDBMS(MySQL、PostgreSQL等)でもロールフォワードは使われていますか?

使われています。MySQLのInnODBエンジンではクラッシュリカバリ時にredoログ(更新後ログに相当)を適用してコミット済みデータを復元し、undoログ(更新前ログに相当)で未コミットデータを取り消します。PostgreSQLでもWAL(Write-Ahead Log)を使ったポイントインタイムリカバリ(PITR)が同じ考え方です。IPA試験のレベルではこれらの製品固有の名称は問われないため、「更新後ログで前に進める=ロールフォワード」という原理だけ押さえておけば十分です。