変更バッファ(Change buffer)
InnoDB で、メモリ上にないページを持つセカンダリインデックスの更新を後回しにする仕組み。回転ディスク向けに作られた最適化で、そのことは今の使われ方にも表れている。
行を書き込むと、すべてのセカンダリインデックスを更新しなければならず、その更新箇所は各インデックスの中でばらばらの場所になる。機械式ディスクでは、一回の挿入が十数回のヘッド移動になりかねない。そこで、ページを読み込んでから変更するのではなく、変更内容をシステムテーブルスペース内の専用ツリーに保存しておき、あとでそのページが読まれるとき、またはバックグラウンドスレッドが追いついたときに本物のインデックスページへマージする。条件はインデックスが一意でないことで、一意性の検査には実際にページを見る必要があるからだ。
この手法の魅力を下げた要因は二つある。SSD ではランダム読み取りがほぼ無料になったことと、バッファが大きく溜まると再起動が遅くなりクラッシュリカバリが予測しにくくなることである。MySQL はこの設定を廃止予定としている。