戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

情報処理安全確保支援士 2025年 秋期 午前2 問21


問題文

DBMSがトランザクションのコミット処理を完了するタイミングはどれか。

選択肢

ア:アプリケーションプログラムによるデータ更新命令完了時点
イ:チェックポイント処理完了時点
ウ:ログバッファへのコミット情報書込み完了時点
エ:ログファイルへのコミット情報書込み完了時点(正解)

🔒 解説は解答すると表示されます

トランザクションのコミット完了条件【午前2解説】

正解の理由

正解: エ
トランザクションの「コミット完了」とは、Durabilityを満たすためにコミットログ(コミットを示すログレコード)が永続的な記憶装置(ログファイル)へ書き込まれ、破損や障害が起きても復旧可能な状態になったことを指します。ログバッファは主記憶上の一時領域であり、そこへの書込み完了だけでは電源断やクラッシュ時に消失する可能性があります。チェックポイント処理はデータページの遅延書込みや復旧コストの低減を目的とした別工程であり、コミット応答の同期条件とは異なります。したがって「ログファイルへのコミット情報書込み完了(エ)」が正しい判断基準です。

解法ステップ

  1. ACIDのうちD(Durability:永続性)がコミット応答で何を要求するかを確認する。
  2. メモリ上のログバッファとディスク上のログファイルの違い(揮発性か否か)を意識する。
  3. チェックポイント処理の目的(復旧効率化や古いログの破棄)を理解する。
  4. 「コミット完了」とは、障害後もトランザクション効果が残ることを保証できる状態であると定義する。
  5. 以上から、ログファイル(永続媒体)への書込み完了が必要であると結論づける。

選択肢別の誤答解説

  • ア: アプリケーションプログラムによるデータ更新命令完了時点
    誤り。アプリが更新処理を終えても、その変更やコミット情報がメモリ上だけで完結している場合、電源断で消失する恐れがあります。耐久性が保証されません。
  • イ: チェックポイント処理完了時点
    誤り。チェックポイントはデータページを書き出して復旧を容易にする後処理であり、コミット完了の同期条件ではありません。コミットはチェックポイントの完了を待たずに完了しうるため不適切です。
  • ウ: ログバッファへのコミット情報書込み完了時点
    誤り。ログバッファは主記憶上の一時領域で、ここへの書込みだけでは障害耐性がなく、Durabilityを満たしません。ディスクへのフラッシュ(同期書込み)が必要です。
  • エ: ログファイルへのコミット情報書込み完了時点
    正解。コミットログが永続記憶へ確実に書き込まれた段階で、トランザクションの耐久性が保証され、コミット完了と見なされます。

よくある誤解(2〜3行)

  • 「アプリの更新命令完了=コミット完了」とする誤解:更新命令は単に処理の完了を意味し、永続化(ディスクへのフラッシュ)を伴わないことが多いです。
  • 「チェックポイント完了でコミット保証」とする誤解:チェックポイントは復旧負荷を下げる処理であり、個々のコミットの耐久性保証とは別です。

補足コラム

  • Write-Ahead Logging(WAL)原則:データページを書き換える前に、その変更を表すログを先に永続化することで一貫性と耐久性を確保します。多くのDBMS(InnoDB、PostgreSQL等)はこの方式を採用しています。
  • ARIESアルゴリズムでは、コミット時にコミットログのフラッシュを強制し、その後にデータページの遅延書込みを行う設計が一般的です。
  • 実装上の注意点:fsyncやfdatasyncによる同期書込みはコストが高く、性能改善のためにgroup commit(複数トランザクションのコミットログをまとめてフラッシュ)や遅延Durabilityオプションが使われます。ただし遅延設定は耐久性要件に影響するため運用ポリシーに注意が必要です。

FAQ

Q: ログバッファへ書いた直後にコミット応答を返すDBはある?
A: 遅延耐久性(async commit)を設定しているシステムでは、ログをメモリに置いたまま応答するモードが存在しますが、これは耐久性を犠牲にする設計上のトレードオフです。標準的なコミット保証とは異なります。
Q: チェックポイントがなぜ必要か、コミットとどう関係するか?
A: チェックポイントはデータページのディスク書込みを進め、復旧時に参照すべきログ領域を限定して復旧時間を短縮します。コミット自体の耐久性を与えるものではありませんが、長期的なログ管理と性能に影響します。
Q: 「fsyncを呼ぶ」とは具体的に何をしているのか?
A: OSに対して指定ファイルのメモリキャッシュ内容を物理ディスクへ反映させるよう要求します。これによりログレコードが実際の永続媒体に書かれ、コミットの耐久性が確保されます。

関連キーワード: トランザクション、コミット、耐久性、WAL, ログバッファ、ログファイル、チェックポイント、ARIES, fsync, group commit
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

情報処理安全確保支援士を
クイズ形式で学習しませんか?

クイズ画面へ遷移する→

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について