ホーム > データベーススペシャリスト試験 > 2010年
データベーススペシャリスト試験 2010年 午前2 問16
システム障害発生時には, データベースの整合性を保ち、かつ, 最新のデータベース状態に復旧する必要がある。このために, DBMS がトランザクションのコミット処理完了とみなすタイミングとして, 適切なものはどれか。
ア:すべての更新データの実更新完了時点
イ:チェックポイント処理完了時点
ウ:ログバッファへの書込み完了時点
エ:ログファイルへの書出し完了時点(正解)
解説
トランザクションのコミット処理完了タイミング【午前2 解説】
要点まとめ
- 結論:トランザクションのコミットは「ログファイルへの書出し完了時点」で判断するのが正しいです。
- 根拠:ログファイルへの書出し完了は、障害発生後のリカバリに必要な情報が永続化されたことを意味します。
- 差がつくポイント:更新データの実更新完了やログバッファ書込みでは、障害時にデータ整合性が保証されません。
正解の理由
トランザクションのコミット完了は、障害発生時にデータベースの整合性を保ちつつ最新状態に復旧できることが重要です。
ログファイルへの書出し完了(ディスクへの永続化)が完了して初めて、トランザクションの変更内容が確定したとみなせます。
これにより、障害時のリカバリ処理でログを参照し、未完了のトランザクションを巻き戻すことが可能となります。
ログファイルへの書出し完了(ディスクへの永続化)が完了して初めて、トランザクションの変更内容が確定したとみなせます。
これにより、障害時のリカバリ処理でログを参照し、未完了のトランザクションを巻き戻すことが可能となります。
よくある誤解
ログバッファへの書込み完了やチェックポイント処理完了時点でコミット完了と誤解しがちですが、これらは必ずしも永続化を保証しません。
解法ステップ
- トランザクションのコミットとは何かを理解する(変更内容の確定)。
- 障害発生時のリカバリに必要な情報はどこに保存されるかを考える。
- ログバッファはメモリ上の一時領域であり、永続化されていないことを認識する。
- チェックポイントは復旧効率化のための処理であり、コミット完了の判断基準ではない。
- したがって、ログファイル(ディスク)への書出し完了がコミット完了のタイミングとなる。
選択肢別の誤答解説
- ア: すべての更新データの実更新完了時点
→ 実更新は遅延書込み(遅延更新)されることもあり、障害時に未反映の可能性があるため不適切。 - イ: チェックポイント処理完了時点
→ チェックポイントは復旧を高速化するための処理であり、コミット完了の基準ではない。 - ウ: ログバッファへの書込み完了時点
→ ログバッファはメモリ上の一時領域で、障害時に消失する可能性があるため信頼できない。 - エ: ログファイルへの書出し完了時点
→ ディスクへの永続化が完了し、障害時のリカバリに必要な情報が確実に保存された状態であるため正解。
補足コラム
トランザクション管理における「Write-Ahead Logging(WAL)」方式では、更新内容をデータファイルに反映する前に必ずログファイルに書き込むことが求められます。これにより、障害発生時にログを使ってデータの整合性を保ちながら復旧が可能となります。
FAQ
Q: なぜログバッファへの書込みだけでは不十分なのですか?
A: ログバッファはメモリ上の一時領域であり、障害発生時に内容が失われる可能性があるため、永続化が必要です。
A: ログバッファはメモリ上の一時領域であり、障害発生時に内容が失われる可能性があるため、永続化が必要です。
Q: チェックポイント処理はコミット完了と関係ありますか?
A: チェックポイントは復旧時間短縮のための処理であり、コミット完了の判断基準ではありません。
A: チェックポイントは復旧時間短縮のための処理であり、コミット完了の判断基準ではありません。
関連キーワード: トランザクション管理, コミット処理, ログファイル, データベース整合性, Write-Ahead Logging, 障害復旧, DBMS