ホーム > システムアーキテクト試験 > 2016年
システムアーキテクト試験 2016年 午前2 問21
システム障害発生時には、データベースの整合性を保ち、かつ、最新のデータベース状態に復旧する必要がある。このために、DBMSがトランザクションのコミット処理を完了とするタイミングとして、適切なものはどれか。
イ:チェックポイント処理完了時点
ウ:ログバッファへのコミット情報書込み完了時点
エ:ログファイルへのコミット情報書込み完了時点(正解)
ア:アプリケーションの更新命令完了時点
解説
トランザクションのコミット処理完了タイミング【午前2 解説】
要点まとめ
- 結論:コミット完了は「ログファイルへのコミット情報書込み完了時点」が適切です。
- 根拠:ログファイルは永続的な記録媒体であり、障害時の復旧に必須だからです。
- 差がつくポイント:ログバッファでは揮発性のため、書込み完了だけでは復旧保証になりません。
正解の理由
トランザクションのコミット処理は、データベースの整合性と最新状態の復旧を保証するために、コミット情報が永続的に保存される必要があります。ログファイルはディスク上の永続的な記録媒体であり、ここにコミット情報が書き込まれて初めてトランザクションは完了とみなされます。これにより、障害発生時にログを参照して正確に復旧処理が可能となります。
よくある誤解
ログバッファへの書込み完了でコミット完了と誤解されがちですが、バッファは揮発性であり障害時に消失します。チェックポイント処理完了は復旧の一助ですが、コミット完了のタイミングではありません。
解法ステップ
- トランザクションのコミットとは何かを理解する(整合性と永続性の保証)。
- コミット情報の保存先を確認する(揮発性か永続性か)。
- ログバッファとログファイルの違いを把握する。
- 障害発生時の復旧に必要な情報がどこにあるかを考える。
- 選択肢の中で永続的に保存されるタイミングを選ぶ。
選択肢別の誤答解説
- ア: アプリケーションの更新命令完了時点
→ アプリケーションの処理完了はDBMS内部の状態とは異なり、永続化保証がありません。 - イ: チェックポイント処理完了時点
→ チェックポイントは復旧効率化のための処理であり、コミット完了のタイミングではありません。 - ウ: ログバッファへのコミット情報書込み完了時点
→ バッファは揮発性であり、障害時に情報が失われる可能性があるため不適切です。 - エ: ログファイルへのコミット情報書込み完了時点
→ 永続的な記録媒体への書込み完了であり、障害復旧に必要な情報が確実に保存されます。
補足コラム
トランザクション管理における「Write-Ahead Logging(WAL)」方式では、データの更新より先にログファイルにコミット情報を書き込むことが必須です。これにより、障害発生時にログを基にデータベースの整合性を保った復旧が可能となります。
FAQ
Q: なぜログバッファへの書込みでは不十分なのですか?
A: ログバッファはメモリ上の一時領域であり、電源障害などで内容が消失するため、永続性が保証されません。
A: ログバッファはメモリ上の一時領域であり、電源障害などで内容が消失するため、永続性が保証されません。
Q: チェックポイント処理はコミットとどう違いますか?
A: チェックポイントはデータベースの状態をディスクに反映し復旧を効率化する処理であり、トランザクションのコミット完了とは別の概念です。
A: チェックポイントはデータベースの状態をディスクに反映し復旧を効率化する処理であり、トランザクションのコミット完了とは別の概念です。
関連キーワード: トランザクション管理, コミット処理, ログファイル, データベース復旧, Write-Ahead Logging