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