pg_stat_statements — расширение, которое собирает статистику по каждому нормализованному запросу на сервере: сколько раз вызван, суммарное и среднее время выполнения, сколько строк вернул. Без него узкие места ищутся вслепую по логам.
Включить: добавить в postgresql.conf и перезапустить кластер, затем создать расширение:
shared_preload_libraries = 'pg_stat_statements'
CREATE EXTENSION pg_stat_statements;
Топ-10 самых тяжёлых запросов по суммарному времени:
SELECT query, calls, total_exec_time, mean_exec_time
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;
Сбросить накопленную статистику: SELECT pg_stat_statements_reset();. Для учёта времени на дисковый I/O отдельно от CPU включи track_io_timing = on.
#postgresql #sysadmin #database
