バッファプール
データベースが RAM 上に持つ、データページ専用のキャッシュ。性能チューニングの大半は、突き詰めれば必要なページをここに居座らせる作業である。
読み取りは必ずプールを通る。必要なページがなければ読み込まれ、LRU に近い方式で別のページが追い出される。書き込みはメモリ上のページに対して行われ、そのページは「ダーティ」になり、ディスクへはチェックポイントで遅れて書かれる。その間の耐久性は先行書き込みログが保証する。
MySQL では innodb_buffer_pool_size で設定し、目安はサーバーメモリの約70%。PostgreSQL では同等の設定が shared_buffers で、OS のページキャッシュにもあえて頼るため、小さめに設定する。注目すべき数値はヒット率、つまり一度もディスクに触れずに済んだ読み取りの割合だ。