- バッファプールの書き出しは2つのポリシーに分解できる
- Steal はコミット前のデータを書き出すか
- Force はコミット時にダーティなデータを書き出すか
- Shadow paging
- Write-Ahead Log
- 書き込みをログする
- steal + no-force なアルゴリズム
- トランザクション開始時に begin ログを、終了時に commit ログを書き込む
- トランザクションコミット時にログを fsync する
- 複数のトランザクションを fsync を一発にする group commit を行えばコストを下げられる
- ログの方法は3種類
- physical logging は更新行の情報を書き込む
- logical logging はクエリーを書き込む
- physiological logging はページ内の論理更新を書き込む
- physical は更新量が多いとログが多くなり、logical は undo がむずい。
- checkpoint
- ログの適用をどこからするべきかわからない
- ダーティページを書き出した直後に checkpoint ログを書き込むことで、以後のログだけ undo/redo すれば良い