ログ先行書出しとは?ログせんこうかきだし
ログ先行書出しとは、更新後のデータページを記憶装置へ書き出すより先に、その更新を記した ログを不揮発媒体へ書き終えることを義務づける規約。書き出す順序だけを固定する取り決めであり、実データの書出しはバッファに溜めたまま後回しにしてよい。コミットの応答を返す時点で確実に書けているのはログのほうである。
最終更新:2026-10-06
この語が出る過去問を解く →背景
実データを更新のたびにディスクへ書けば安全だが、ランダムな位置への書込みが多発して性能が出ない。まとめ書きにすると今度は、障害時のディスク上の実データがどの時点のものか分からなくなり、進めることも戻すこともできない。ここで「ログが必ず先」という順序さえ守れば、実データがどこまで書けていてもログが上位の記録として残るため、あらゆる中間状態から復元できる。性能と回復可能性を両立させる要が、順序の固定という一点にある。
具体例
PostgreSQLのWAL、OracleのREDOログがこの規約の実装で、コミット要求を受けたプロセスはログの書出し完了を待ってから利用者へ応答を返す。データファイルへの反映はチェックポイントなどの契機でまとめて行われるため、コミット直後のデータファイルには更新が載っていないことのほうが普通である。
試験での引っ掛け
コミット時にディスクへ確実に書かれるのはログであって実データではない、という向きを取り違えやすい。この規約があるからこそ「コミット済みの更新は必ず再現できる」と「未コミットの更新は必ず取り消せる」の両方が成り立ち、片方でも欠けると回復方式そのものが成立しない。順序を逆にして実データだけが書けた状態を作ると、ログに手掛かりが無いためどちらの方向へも直せなくなる。
関連用語
出た過去問
出典:平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問16(IPA)
WAL(Write Ahead Log)プロトコルの目的に関する説明のうち、適切なものはどれか。
正解:何らかの理由でDBMSが停止しても、コミット済みであるがデータベースに書き込まれていない更新データの回復を可能にする。
要点:更新前にログを書くことでコミット済み更新を回復可能にする
WALは、データベースの更新をディスクへ反映するより先に、その更新のログを確実にログファイルへ書き出す規約である。これによりDBMSが異常終了しても、コミット済みでまだ反映されていない更新をログからロールフォワードして回復できる。
出典:平成31年度 春期 データベーススペシャリスト試験 午前Ⅱ 問2(IPA)
次のチェックポイントの仕様に従ってトランザクション処理を行うDBMSにおいて、チェックポイントの発生頻度は1時間当たり何回か。ここで、トランザクションは毎秒20…
正解:3
要点:バッファ満杯40分よりログ切替20分が先に来て20分周期になる
バッファは480Mバイト÷10kバイト=48,000トランザクション分で、毎秒20件なら2,400秒(40分)で満杯になる。ログファイルは240Mバイト分=24,000トランザクション分なので1,200秒(20分)ごとに切り替わる。チェックポイントのたびにバッファは初期化されるため、常に20分ごとのログ切替えが先に条件を満たし、1時間当たり3回となる。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。