ログ先行書き込み
from SQL Serverのデータベースファイルの基本構造
1. なにか更新処理が行われると、「データ自体を更新する前」に更新内容の履歴をトランザクションログファイルに書き込む
2. 更新内容が正しくトランザクションログファイルに書き込まれたら、データの更新処理が実行される
データベースのデータファイルの変更を直接行わない
1. まず変更内容をログとして記録する(早い)
2. 設けられたチェックポイントごとでディスクに同期をとる(遅い)
この間はダーティページと呼ばれる
利点
更新要求をログに先行して書き込み、データ消失を最小限に抑えられる
整合性を保ちつつディスクにデータを書き込むのは時間がかかる
まとめて反映するためランダムに書き込むよりパフォーマンスがよい
ディスクへの書き込み回数自体を減らせる
例えば、データファイルにデータが書き込まれる前に電源断などの障害が発生しても、トランザクションログに更新内容の履歴が書き込まれていれば処理を復元できる
RDBMSによって呼ばれ方が異なる(2016年)
Oracle: REDOログ
SQL Server: トランザクションログ
MySQL: InnoDBログ
PostgreSQL: WALログ
WindowsのNTFSでもジャーナリングと呼ばれ、用いられている
参考
SQL Server トランザクション ログのアーキテクチャと管理ガイド - SQL Server | Microsoft Learn
/gosyujin-books/0136: WEB+DB-PRESS-Vol.58.pdf
DBアタマアカデミー
30.3. ログ先行書き込み(WAL) PostgreSQL 15.0
/gosyujin-books/0088: Software-Design-2022年6月号 00.pdf
/gosyujin-books/0127: インフラエンジニアの教科書2 スキルアップに効く技術と知識.pdf
/gosyujin-books/0287: おうちで学べるデータベースのきほん.pdf