FE EXAM

チェックポイント(Checkpoint)

障害回復を速めるため定期的に主記憶の内容をディスクへ書き出す時点。

INTERACTIVE VISUALIZATION
主記憶
ディスク
CP
主記憶(未書出し)
なし
ディスク(書出し済)
なし
状態
正常
シナリオ
ステップ1 / 8
STEP 1/8データベースの更新が始まるデータベースの更新は、いきなりディスクに書かれるわけではありません。まず主記憶(=メモリ上の作業用領域。バッファと呼ぶ)にためられます。ディスクへの書き込みは遅いので、毎回書くと処理が遅くなるからです。横軸は時間の流れを表します。
時間 →U更新AU更新BCPチェックポイントU更新C障害主記憶: ディスク:
解説

📌
チェックポイントとは

主記憶更新がたまるディスク確実に保存チェックポイントで書き出す

チェックポイントとは、主記憶(=メモリ上の作業用領域。バッファとも呼ぶ)にたまった更新内容を、定期的にディスクへまとめて書き出す時点のことです。これにより、障害が起きても回復を速くできます。

身近な例で考えると、長い文書を書くときの「上書き保存」に似ています。書いた内容はパソコンのメモリに一時的に置かれますが、定期的に保存しておかないと、停電したときに保存後の分が消えてしまいます。逆に、こまめに保存しておけば、最後の保存以降のわずかな分だけ書き直せば済みます。

上のツールで▶ボタンを押すと、更新が主記憶にたまり、チェックポイントでディスクへ書き出され、障害が起きてもチェックポイントを起点に短時間で回復できる流れを確認できます。

⚙️
役割

なぜ毎回ディスクに書かず、わざわざ主記憶にためるのでしょうか。それは ディスクへの書き込みがとても遅い からです。更新のたびにディスクへ書くと処理が遅くなるので、いったん高速な主記憶にためておき、まとめて書き出すほうが効率的なのです。

しかし主記憶は電源が切れると内容が消える、という弱点があります。そこでチェックポイントが次の役割を担います。
主記憶の内容を保護する:たまった更新をディスクへ書き出し、消えないようにする
「ここまでは確実」という基準点を作る:障害時にどこまで信頼できるかをはっきりさせる
回復作業を軽くする:調べ直す範囲を、チェックポイント以降だけに限定できる

多くのDBMS(=データベース管理システム)は、一定時間ごとや一定量の更新ごとに、自動でチェックポイントを作ります。「速さ(主記憶にためる)」と「安全(ディスクに書き出す)」の両立を図る、賢い仕組みだと考えてください。

🚩
障害復旧での起点

ここだけ回復CP(起点)調べ直さない

障害が起きてシステムを再起動するとき、いちばん大変なのは「どこまでが正しく保存されているか分からない」ことです。ここで 直近のチェックポイントが「回復の起点」 になります。チェックポイントまでの内容はディスクに確実に書き出されているので、信頼できるからです。

回復作業の考え方は次のとおりです。
チェックポイント以前:すでにディスクにあるので、調べ直す必要なし
チェックポイント以降:消えた可能性があるので、ログ(=処理の記録)を見ながら回復する

もしチェックポイントがなければ、データベースを作った最初から全部やり直すことになり、何時間もかかってしまいます。チェックポイントを起点にすれば、処理し直す範囲がぐっと狭まり、回復時間を大きく短縮できます。上のツールの「回復の起点」ステップで、CP以降の区間だけが対象になる様子を確認してみてください。

練習問題

🎯
基本情報技術者 練習問題

Q1.データベースのチェックポイントの説明として最も適切なものはどれか。
A.主記憶上の更新内容を定期的にディスクへ書き出す時点
B.トランザクションを取り消す操作
C.複数トランザクションの干渉を防ぐ仕組み
D.データを暗号化する処理
Q2.チェックポイントを設ける主な目的はどれか。
A.ディスク容量を節約するため
B.障害発生時の回復にかかる時間を短くするため
C.トランザクションの数を減らすため
D.データを圧縮するため
Q3.障害が発生したとき、回復処理の起点になるのはどこか。
A.データベースを作成した最初の時点
B.障害が発生した瞬間
C.直近のチェックポイントの時点
D.すべてのトランザクションが完了した時点

関連コンテンツ