チェックポイント【checkpoint】
概要

データベースへの変更は処理速度を高めるため、まずメインメモリ(RAM)上で行われる。ストレージへの実際の書き込みは、変更内容が一定量蓄積された段階や一定の時間間隔で、まとめて実行される。この書き込み処理や、その時点のことをチェックポイントという。
ストレージ上のデータは必ずしも最新の状態を反映しておらず、メモリ上のデータとの間に差が生じる。突発的な停電やシステム障害が発生すると、メモリ上では完了しているが、ストレージへの書き込みを待っているデータが失われてしまう。
障害からの復旧では、最後に記録されたチェックポイントの状態を基点として処理を進める。チェックポイント以前に完了(コミット)していたトランザクションはすでにストレージへ反映されているため、それ以降にコミットされた処理だけをトランザクションログ(更新履歴)から再現し、データを障害直前の状態へ戻す。この処理を「ロールフォワード」(roll forward)という。一方、障害発生時点で未コミットだったトランザクションについては、変更内容をすべて取り消し、開始前の状態に巻き戻した上でやり直す。この処理を「ロールバック」(rollback)という。チェックポイントが定期的に作成されることで、復旧時にログを遡って解析・適用する範囲が限定され、復旧に要する時間を短縮できる。
「チェックポイント」という考え方および用語はデータベース以外にも見られる。ファイルシステムではジャーナリングやメタデータの整合性維持に利用され、仮想マシンやコンテナでは実行中の状態を保存し、後から同じ状態へ復元する機能を指す場合がある。機械学習の分野では、学習途中のモデルのパラメータを保存したファイルをチェックポイントと呼び、長時間に及ぶ学習の再開などに利用される。いずれも、処理の途中経過を保存し、必要に応じてその状態から再開や復元ができるようにするという考え方に基づいている。
なお、日本語の外来語として「確認事項」(チェックすべきポイント)や「評価基準」(チェックする際のポイント)といった意味で「チェックポイント」という語が使われることがあるが、英語における本来の意味は「検問所」であり、これらの外来語としての用例は和製英語とされる。