RAM в PostgreSQL

Зачем это знать:

  • если памяти хватает, БД меньше ходит на диск.

  • если памяти мало, сортировки и hash join могут уходить во временные файлы.

Связанные темы:

Память, кэш и I/O

Join-алгоритмы и сортировки

Мониторинг и диагностика PostgreSQL


Куда тратится RAM

  • shared buffers,

  • файловый кеш ОС,

  • work_mem для Sort/Hash,

  • соединения,

  • временные структуры запроса.

Когда полезно

  • горячие страницы таблиц и индексов в памяти,

  • сортировка помещается в RAM,

  • hash join помещается в RAM,

  • меньше чтений с диска.

Когда плохо

  • слишком много соединений,

  • work_mem слишком большой для многих параллельных запросов,

  • запросы сортируют огромные наборы,

  • hash join не помещается в память.

Пример

SELECT client_id, count(*)
FROM orders
GROUP BY client_id;

Может съедать RAM.

Если RAM мало - пойдёт на диск.

Как снижать

  • следить за temp files,

  • ограничивать размер выборки,

  • проверять план через EXPLAIN,

  • использовать connection pool,

  • аккуратно настраивать work_mem,

  • не запускать тяжёлые отчёты в пик.

Последнее обновление