障害回復を速めるため定期的に主記憶の内容をディスクへ書き出す時点。
チェックポイントとは、主記憶(=メモリ上の作業用領域。バッファとも呼ぶ)にたまった更新内容を、定期的にディスクへまとめて書き出す時点のことです。これにより、障害が起きても回復を速くできます。
身近な例で考えると、長い文書を書くときの「上書き保存」に似ています。書いた内容はパソコンのメモリに一時的に置かれますが、定期的に保存しておかないと、停電したときに保存後の分が消えてしまいます。逆に、こまめに保存しておけば、最後の保存以降のわずかな分だけ書き直せば済みます。
上のツールで▶ボタンを押すと、更新が主記憶にたまり、チェックポイントでディスクへ書き出され、障害が起きてもチェックポイントを起点に短時間で回復できる流れを確認できます。
なぜ毎回ディスクに書かず、わざわざ主記憶にためるのでしょうか。それは ディスクへの書き込みがとても遅い からです。更新のたびにディスクへ書くと処理が遅くなるので、いったん高速な主記憶にためておき、まとめて書き出すほうが効率的なのです。
しかし主記憶は電源が切れると内容が消える、という弱点があります。そこでチェックポイントが次の役割を担います。
・主記憶の内容を保護する:たまった更新をディスクへ書き出し、消えないようにする
・「ここまでは確実」という基準点を作る:障害時にどこまで信頼できるかをはっきりさせる
・回復作業を軽くする:調べ直す範囲を、チェックポイント以降だけに限定できる
多くのDBMS(=データベース管理システム)は、一定時間ごとや一定量の更新ごとに、自動でチェックポイントを作ります。「速さ(主記憶にためる)」と「安全(ディスクに書き出す)」の両立を図る、賢い仕組みだと考えてください。
障害が起きてシステムを再起動するとき、いちばん大変なのは「どこまでが正しく保存されているか分からない」ことです。ここで 直近のチェックポイントが「回復の起点」 になります。チェックポイントまでの内容はディスクに確実に書き出されているので、信頼できるからです。
回復作業の考え方は次のとおりです。
・チェックポイント以前:すでにディスクにあるので、調べ直す必要なし
・チェックポイント以降:消えた可能性があるので、ログ(=処理の記録)を見ながら回復する
もしチェックポイントがなければ、データベースを作った最初から全部やり直すことになり、何時間もかかってしまいます。チェックポイントを起点にすれば、処理し直す範囲がぐっと狭まり、回復時間を大きく短縮できます。上のツールの「回復の起点」ステップで、CP以降の区間だけが対象になる様子を確認してみてください。