ページに広告が含まれる場合があります。
データベース管理システム(DBMS)において、障害管理は非常に重要な役割を果たします。これは、トランザクションのACID特性のうち、「D(Durability=耐久性)」に対応する機能です。
障害管理とは?
障害管理とは、障害(たとえば停電やシステム障害)によってデータが失われないようにするための仕組みです。ACID特性の中でも「D:耐久性」に関わる部分であり、データベースに変更が加えられた後、その変更が確実に保存されるよう保証する必要があります。
コミットとチェックポイント
コミットとは?
「コミット(COMMIT)」は、トランザクションの完了を示す命令で、その時点での変更内容をデータベースに反映させる操作です。
ただし、ここで重要なのは以下のポイントです:
- コミットしても、すぐに補助記憶装置(ディスク)に書き込まれるわけではありません。
- 実際には、主記憶装置(バッファ)に反映されるだけです。
- 代わりに、**操作履歴を記録した「ログファイル」**に「更新前」と「更新後」のログが出力され、これは補助記憶装置に保存されます。
チェックポイントとは?
「チェックポイント」は、主記憶装置にあるデータ(バッファ)を補助記憶装置に書き込むタイミングのことを指します。
- コミットとは無関係に、DBMSが自動的に実施します。
- 実行タイミングの例:
- 一定時間が経過したとき
- バッファの空き容量が不足したとき
- ログファイルが切り替わったとき
チェックポイントによって、データベースの内容がディスクに保存されるため、障害発生時の復旧処理が高速化されます。
ロールフォワードとは?
障害が発生した場合、データを復旧する手段のひとつが「ロールフォワード(Roll Forward)」です。
これは、更新後ログを使ってトランザクションの処理を再現(巻き戻し)する手法です。
- コミット後にチェックポイントが実施されていれば、ロールフォワードは不要です。
- コミット後にチェックポイントがなければ、更新後ログを使って再実行(ロールフォワード)が必要になります。
バックアップの種類
障害時の復旧に備えるためには、定期的なバックアップが不可欠です。DBMSでは以下の3種類のバックアップ方法が使われます。
1. フルバックアップ
- データベース全体を保存
- 容量が大きくなるが、復旧が簡単
2. 差分バックアップ
- 前回のフルバックアップ以降に変更があったデータだけを保存
- 復旧時には、フルバックアップ+最新の差分バックアップを使用
3. 増分バックアップ
- 毎日の変更分だけを保存
- 容量が最も少ないが、復旧にはフルバックアップ+すべての増分バックアップが必要
まとめ:障害管理の要点
最後に、この記事で解説したポイントを簡単に振り返っておきましょう。
- コミットでは、主記憶装置にのみデータが反映される
- コミット時には、更新前ログと更新後ログが補助記憶装置に保存される
- チェックポイントでは、バッファの内容が補助記憶装置に書き込まれる
- ロールフォワードは、チェックポイント前にコミットされたデータの復旧に必要
- バックアップには、フル・差分・増分の3種類がある
コメント