CPU в PostgreSQL

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

  • CPU может быть причиной медленной БД.

  • Но часто БД ждёт диск, lock или плохой план.

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

Планировщик запросов и EXPLAIN

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

Индексы в PostgreSQL

DML SELECT

JOIN


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

  • фильтрация строк,

  • join,

  • сортировки,

  • агрегации,

  • вычисления функций,

  • построение результата,

  • проверка индексов при записи.

Частые причины

  • большой Seq Scan,

  • Hash Join по большому набору,

  • Nested Loop с большим внешним набором,

  • ORDER BY без подходящего индекса,

  • GROUP BY по миллионам строк.

Пример

SELECT o.id, c.name
FROM orders o
JOIN clients c ON c.id = o.client_id
WHERE o.created_at >= '2026-01-01';

Важно:

  • индекс на orders.created_at,

  • индекс на orders.client_id,

  • актуальная статистика,

  • реальный объём данных.

Как снижать

  • читать план через Планировщик запросов и EXPLAIN,

  • добавлять индексы под WHERE/JOIN/ORDER BY,

  • не делать SELECT *,

  • ограничивать диапазоны дат,

  • дробить большие отчёты,

  • отделять OLTP от тяжёлой аналитики.

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