Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Чтобы найти топ-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
    languagesql
    themeEmacs
    titlepostgresql
    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
    languagesql
    themeEmacs
    titlepostgresql
    SELECT pg_stat_statements_reset();                


Данную информацию необходимо будет выгрузить в отдельный файл (.CSV), и передать на анализ
в Отдел сопровождения и внедрения IQStore: support@iqstore.ru