WAL(ログ先書き)プロトコルとは?だぶりゅーえーえるろぐさきがきぷろとこる
WAL(ログ先書き)プロトコルとは、障害回復を成り立たせるための書き出し順序の規約で、データページをディスクへ落とすより先にログを永続化することを要求する。この順序を守るかぎり、ディスク上のデータへ反映された更新は必ずログにも残っているため、どこまで確定していたかを後から判定でき、REDOもUNDOも実行できる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
耐久性を素直に満たそうとすれば、COMMITのたびに関係するデータページをすべて書き出すことになるが、更新箇所はディスク上に散らばっており、ランダム書込みの遅さがそのまま応答時間に乗ってしまう。一方でログは追記だけの順次書込みなので比較的速い。何を先に確定させれば回復できるかを整理し、速い書込みだけを同期にしたのがこの規約であり、性能と耐久性の折り合いをつける仕組みといえる。
具体例
PostgreSQLのWALやOracleのREDOログがこれにあたり、COMMIT時にはログだけを同期書込みして応答を返す。データページの書き出しは後からまとめて行われ、区切りとしてチェックポイントを取ることで、障害時に読み直すログの範囲を限定している。
試験での引っ掛け
COMMITの完了をデータファイルへの反映完了と読むのは誤りで、「COMMITしたのにデータページが古い」のは異常ではなく設計どおりである。ログが残っている限り再現できるという理屈を押さえる。またログを書く先とデータを書く先を同じ装置に置くと、その装置の故障で両方を同時に失うため、回復可能性の前提が崩れる点も問われる。
関連用語
出た過去問
出典:令和6年度 春期 応用情報技術者試験 午前 問27(IPA)
トランザクションTはチェックポイント後にコミットしたが、その後にシステム障害が発生した。トランザクションTの更新内容をその終了直後の状態にするために用いられる復…
正解:ロールフォワード
要点:コミット済みはロールフォワード、未コミットはロールバックで復旧
WALプロトコル(データ更新より先にログを書く方式)では更新内容のログを先に書き出すため、コミット済みトランザクションの更新後情報(アフターイメージ)はログに残っている。障害復旧では、直前のチェックポイント時点のデータベースに対してログのアフターイメージを再適用し、コミット済みの状態を再現する。この手法をロールフォワードと呼ぶ。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。