Кольцевой буфер PostgreSQL
При чтении или записи большой таблицы PostgreSQL использует кольцевой буфер.
Кольцевой буфер - это небольшая и временная буферная область. При выполнении любого из следующих условий появляется кольцевой буфер:
-
Bulk-reading:
Когда сканируется отношение, размер которого превышает четверть размера буферного пула (shared_buffers/4). В этом случае размер кольцевого буфера составляет 256 КБ
-
Bulk-writing:
Когда выполняются перечисленные ниже команды SQL. В этом случае размер кольцевого буфера составляет 16 МБ.
- VACUUM
При выполнении операции VACUUM размер кольцевого буфера составляет 256 КБ.
Выделенный кольцевой буфер уничтожается сразу же после использования.
Преимущество кольцевого буфера очевидно. Если backend процесс читает большую таблицу без использования кольцевого буфера, все сохраненные страницы в буферном пуле вытесняются, что снижает коэффициент попадания в кэш. Кольцевой буфер позволяет избежать этой проблемы, предоставляя для большой таблиц временную буферную область
Примечание: Почему размер кольцевого буфера по умолчанию составляет 256 КБ?
Ответ Вы найдете в README.



