DB の障害回復は WAL (ログ先行書込) と チェックポイントが基本。AP では『どの時点まで回復可能か』を問う問題が頻出です。
WAL (Write-Ahead Logging) は『データを書く前にログを書いておく』方式ですね。
ログさえ残っていれば、データファイルが壊れても復元できます。
じゃあ チェックポイント って何?
ある時点までの全 Tx をログから DB ファイルに反映しきった整合点のことよ。
回復するときは、チェックポイント以降のログだけ再実行すればいいから速くなるのね。
うぅ〜ん…ロールバック と ロールフォワード の違いって何だろう…?
ロールバックは『未コミットの Tx を取り消す』動作で、ロールフォワードは『コミット済みの Tx をログから再現する』動作ですね。
障害発生時には、まずロールフォワードで前進回復して、そのあと未コミットの Tx をロールバックする流れになります。
AP科目Aで出る図解問題は、横軸を時間にして Tx の開始・コミット・障害発生の関係を描いて、それぞれをロールバック/ロールフォワード/影響なしに分類できるかを問うものなのよ。
確認クイズ
DBMS でチェックポイントを取得する主な目的として、最も適切なものはどれか。
- 障害発生時に再実行が必要なログ範囲を限定し、回復時間を短縮する
- DB ファイルを完全にバックアップする
- デッドロックの発生を防止する
- トランザクションの分離レベルを SERIALIZABLE に固定する
こたえを見る
正解: 1. 障害発生時に再実行が必要なログ範囲を限定し、回復時間を短縮する
チェックポイントは『この時点まではディスク反映済み』という整合点で、障害回復時にここから後のログだけを再実行 (ロールフォワード) すれば良くなり、回復時間が短縮されます。完全バックアップとは別物です。