WAL
Write Ahead Log
データの変更はトランザクションログに書き込む
メモリ上の log_buffer にトランザクションログを書き込み、さらにハードディスク上のトランザクションログファイルに書き込む
=> シーケンシャル書き込み
テーブルデータファイルを直接操作することは極力避ける
更新の流れ
1. トランザクションログを log_buffer に書き込んだ後、buffer_pool を更新
バッファプールで変更されたが、まだデータファイルに書き込まれていないページは ダーティページ としてバッファプール内で扱われる 2. log_buffer のトランザクションログをハードディスク上のトランザクションログに書き込む
3. 一定周期で log_buffer と buffer_pool の内容をハードディスク(トランザクションログとテーブルデータ)に書き込む
バッファプールが溢れた時に書き込む
page_cleaner スレッドが周期的に起動した時