InnoDB/HailDBの異なるバッファを理解する。

なんか2、3回同じ事を調べている気がするのでメモ。ツッコミ歓迎

元ネタ:http://dev.mysql.com/doc/innodb/1.1/en/glossary.html

Buffer pool

ユーザレベルのページキャッシュ。LRU(っぽいの)で管理。

double write buffer

random writeおそいので、とりあえず変更ログとしてシーケンシャルに変更ページの位置+内容をここに書いておく。
ここに書かれた時点でリカバリーは可能なのでcommitは終了可。
適当にタイミングをみて実際に変更ページを書き込み。

Insert buffer

Primary indexはどうせバルクinsertだからいいけど、secondary indexへの挿入はランダムアクセスになっちゃう。
なので、その都度挿入処理をしないで、insert buffer上にある程度更新処理をためておいて、バッチでmerge処理する。
ちょっとLSM-Treeに似ているかもしれない。