情報処理試験を勉強していると、「チェックポイントって結局何をしてるの?ロールバックやロールフォワードとどう関係するの?」と混乱しがちです。

対象試験と出題頻度

チェックポイントは、基本情報技術者・応用情報技術者で出題されるテーマです。

DBMSの障害回復に関連する問題で繰り返し登場しており、ロールフォワードやロールバックとの関係を正確に理解しているかが問われます。

詳細をクリックして確認
対象試験:
基本情報技術者
応用情報技術者
出題頻度:
★★★☆☆
ランクB(標準)覚えておくと有利

用語の定義

チェックポイント(Checkpoint)とは、一言で言うと

 「DBMSがメモリ上のバッファ内容をディスクに書き出し、データベースとの同期を取るタイミング

のことです。

イメージとしては、長い文章を書いているときの”途中保存(Ctrl+S)”です。

レポートを書いている途中でPCがフリーズしても、最後に保存したところまでの作業は残ります。逆に、保存していなかった分は消えてしまいます。

データベースにおいてこの「途中保存」に相当するのがチェックポイントです。

📊 チェックポイントの基本情報

項目 内容
英語名 Checkpoint
分類 データベースの障害回復(トランザクション処理)
役割 メモリバッファとディスクの同期を取り、障害回復の起点を作る
関連キーワード ログファイル、ロールフォワード、ロールバック、WALプロトコル

解説

DBMSは、ディスクへの入出力回数を減らすために、トランザクションの更新情報をいきなりディスクに書くのではなく、まずメモリ上のバッファに蓄えます。

ログファイルについてはWALプロトコル(Write Ahead Logging)に従ってディスクに即時書き出しされますが、データ本体のバッファ内容は一定間隔でまとめてディスクに反映されます。

この「まとめてディスクに反映するタイミング」がチェックポイントです。

チェックポイントで行われる処理

チェックポイントの取得時には、以下の処理が順番に実行されます。

▼ チェックポイント取得時にDBMSが行う4つの処理

処理内容 なぜ必要か
1 実行中のトランザクションを一時停止 書き出し中にバッファが変更されると整合性が崩れるため、更新を止める
2 メモリバッファの内容をディスクに書き出し ここが本体。この処理で「ディスク反映済み」の境界線が確定する
3 チェックポイントレコードをログに記録 障害回復時に「どこまで反映済みか」をDBMSが判別できるようにする
4 一時停止していたトランザクションを再開 同期が完了したので、通常の更新処理に戻す

※ ステップ2(赤字)がチェックポイントの核心。試験で問われるのもこの部分。

ここだけは確実に押さえてください。

②の「バッファ内容をディスクに書き出す」がチェックポイントの核心です。この処理によって、チェックポイント以前にコミット済みのトランザクションはディスクへの反映が保証されます。

障害回復との関係

チェックポイントが存在することで、システム障害が発生した際の回復範囲を限定できます。

具体的には、最後のチェックポイントから障害発生時点までの間に実行されていたトランザクションだけを対象にすればよく、それ以前のトランザクションには手を加える必要がありません。

チェックポイントと障害回復の関係図

時間→
チェックポイント
障害発生
トランザクションの状態 必要な回復処理
チェックポイント前にコミット済み 回復処理は不要(ディスク反映済み)
チェックポイント後にコミット済み ロールフォワード(前進復帰)でログから再反映
障害発生時に未コミット ロールバック(後退復帰)で取り消し

混同しやすい用語との違い

用語 意味 チェックポイントとの関係
コミット トランザクションの更新を確定する操作 コミットはトランザクション単位、チェックポイントはDBMS全体のバッファ同期
セーブポイント トランザクション途中に設定する中間地点。そこまで部分的にロールバックできる セーブポイントはトランザクション内の話、チェックポイントはDBMS管理の定期処理
2相コミット 分散データベースでトランザクションの原子性を保証するプロトコル 分散環境のコミット制御であり、バッファの同期処理とは目的が異なる

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

💡 チェックポイントの核心を3行で

・メモリバッファの内容をディスクに書き出すタイミング
・これにより障害回復の対象範囲を最後のチェックポイント以降に限定できる
・コミット・セーブポイント・2相コミットとは役割が異なる


試験ではこう出る!

チェックポイントは、FE・APの午前問題で障害回復の仕組みを問う問題として定期的に出題されています。

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

📊 過去問での出題実績

試験回 出題内容 問われたポイント
AP R6秋
午前 問31
DBMSのチェックポイントに関する記述として適切なものを選ぶ問題。 ・「バッファ内容を二次記憶に書き出した時点」が正解
・セーブポイント、即時制約/遅延制約、2相コミットの説明がひっかけ
AP R4秋
午前 問29
チェックポイントを取得するDBMSで、ロールフォワードによって障害回復できるトランザクションを選ぶ問題。 ・チェックポイント後にコミット済みのトランザクションが対象
・時間軸の図を読み取る力が必要
AP R6春
午前 問27
チェックポイント後にコミットしたトランザクションの復旧技法を選ぶ問題。 ・正解は「ロールフォワード」
・2相ロック、シャドウページ、ロールバックがひっかけ
FE H28秋
午前 問30
上記AP R6春 問27と同一構成の問題(流用)。 ・FEとAPで同じ問題が出回る典型例
・選択肢の文言もほぼ同一

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

パターン1:「チェックポイントの説明を選べ」
4つの記述が並び、チェックポイントに該当するものを選ぶ形式。ひっかけとして「セーブポイント」(トランザクション内の中間地点)、「即時制約/遅延制約」(制約チェックのタイミング)、「2相コミット」(分散トランザクションの調停)の説明が紛れ込む。キーワードは「バッファ」「二次記憶に書き出し」「回復作業を不要にする」。

 

パターン2:「チェックポイント後の復旧技法を選べ」
時間軸の図とともにトランザクションの実行状況が示され、ロールフォワードの対象を答えさせる形式。「チェックポイント後にコミット済み→ロールフォワード」「未コミット→ロールバック」の判断ができれば正解にたどり着ける。

 

試験ではここまででOKです。WALプロトコルの詳細な動作やチェックポイントの内部アルゴリズムまで問われることはないので、深追いは不要です。


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

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


Q. DBMSのチェックポイントに関する記述として、最も適切なものはどれでしょうか?

  • A. トランザクションの途中に設定する中間地点であり、その地点まで部分的にロールバックできる。
  • B. データベースバッファの内容を二次記憶に書き出した時点であり、それ以前にコミット済みのトランザクションの回復処理を不要にする。
  • C. 分散トランザクションにおいて、全参加者からコミット可否を受け取り、コミットかロールバックかを判定する時点である。

正解と解説を見る

正解:B

解説:
チェックポイントは、DBMSがメモリバッファの内容をディスクへ書き出してデータベースとの同期を取るタイミングです。これにより、障害発生時にそれ以前のコミット済みトランザクションへの回復処理が不要になります。

選択肢Aはセーブポイントの説明です。セーブポイントはトランザクション内で設定する中間復帰地点であり、DBMS全体のバッファ同期とは目的が異なります。選択肢Cは2相コミットの説明です。2相コミットは分散データベース環境でトランザクションの原子性を保証するプロトコルであり、定期的なバッファのディスク書き出しとは別の仕組みです。


よくある質問(FAQ)

Q. チェックポイントの取得間隔はどのくらいですか?

一般的なDBMSでは1分〜5分程度の間隔で自動取得されます。間隔が短すぎるとディスクI/Oが増えて通常処理の性能が落ち、長すぎると障害時の回復に時間がかかります。IPA試験では具体的な秒数を問う問題は出ないため、「一定間隔で自動的に取得される」と理解しておけば十分です。

Q. チェックポイントがあれば、ログファイルは不要ですか?

不要にはなりません。チェックポイントはあくまで「ここまでのバッファ内容はディスクに反映済み」という境界線を作るだけです。チェックポイント以降にコミットされたトランザクションを復旧するにはログファイルの更新後情報が必要ですし、未コミットのトランザクションを取り消すにはログファイルの更新前情報が必要です。両者はセットで機能します。

Q. 媒体障害(ディスク故障)でもチェックポイントは有効ですか?

媒体障害の場合は、ディスク上のデータ自体が破損しているため、チェックポイントだけでは対処できません。別途取得しておいたバックアップファイルからデータベースを復元し、そこからログファイルを使ってロールフォワードで最新状態に戻す手順になります。チェックポイントが効力を発揮するのは、主にシステム障害(電源断やOS異常終了など)やトランザクション障害です。

Q. WALプロトコルとチェックポイントの関係は何ですか?

WAL(Write Ahead Logging)は「データ本体をディスクに書く前に、必ずログを先にディスクへ書き出す」というルールです。このルールにより、チェックポイント時点でバッファがディスクに書かれる際にも、対応するログが先に確実に保存されている状態が保証されます。チェックポイントはWALプロトコルの上に成り立つ仕組みであり、両者は独立した概念ではなく組み合わせで動作します。