Чтобы найти топ-100 самых долгих запросов в PostgreSQL, можно воспользоваться системными представлениями pg_stat_statements
или pg_stat_activity
.
Способ 1: Использование pg_stat_statements
(Рекомендуется)
Если в PostgreSQL включен модуль pg_stat_statements
, то можно выполнить следующий SQL-запрос:
...
- Показывает 100 самых долгих запросов по суммарному времени выполнения (
total_time
). mean_time
– среднее время выполнения.max_time
– самое долгое выполнение.calls
– сколько раз запрос выполнялся.
Способ 2: Мониторинг текущих долгих запросов (pg_stat_activity
)
Если pg_stat_statements
не включен, можно посмотреть активные запросы, которые выполняются прямо сейчас:
...
- Запросы, которые прямо сейчас выполняются дольше всего.
duration
– время выполнения запроса.state
– статус запроса (например,active
илиidle in transaction
).
Как включить pg_stat_statements
, если он отключен?
Если первый запрос не работает, то нужно включить расширение:
...
После этого нужно перезапустить PostgreSQL.
Дополнительная информация:
- Если база перегружена, можно искать конкретные запросы, которые идут больше 10 секунд:
Code Block language sql theme Emacs title postgresql SELECT pid, query, now() - query_start AS duration FROM pg_stat_activity WHERE state = 'active' AND now() - query_start > interval '10 seconds' ORDER BY duration DESC;
- Чтобы сбросить статистику
pg_stat_statements
:Code Block language sql theme Emacs title postgresql SELECT pg_stat_statements_reset();
Данную информацию необходимо будет выгрузить в отдельный файл (.CSV), и передать на анализ
в Отдел сопровождения и внедрения IQStore: support@iqstore.ru