Получить статистику медленно выполняющихся запросов

10

Моя база данных запускает много разных запросов. Я установил log_min_duration_statementна 1000. Но запросы, зарегистрированные там, не всегда медленные, в большинстве случаев они занимают всего несколько мс.

Можно ли получить статистику по всем запросам, и как часто они занимают более 1000 мс?

user2047809
источник
1
Посмотрите, поможет ли это: настройка log_min_duration_statement игнорируется . Или вы забыли перезагрузить конфигурацию после изменения настроек.
Даниэль Верите

Ответы:

11

Установите расширение pg_stat_statements с помощью команды SQL

CREATE EXTENSION pg_stat_statements

Возможно, вы захотите убедиться, что вы создали его, используя соответствующего пользователя (например, пользователя, которого использует ваше приложение, или какую-то учетную запись dba). Имейте в виду, что любой пользователь, создавший расширение, также будет его владельцем.

Для этого потребуется перезапуск сервера, чтобы он был пригоден для использования (поскольку вам нужно немного изменить конфигурацию в postgresql.conf, что влияет на потребление памяти), но он даст вам статистику по всем запросам.

Пожалуйста, смотрите страницу документации для получения дополнительной информации о том, что предоставляет pg_stat_statements. Смотрите здесь краткий справочник по настройке конфигурационного файла postgresql.conf для pg_stat_statements.

После того, как он установлен и запущен, вы можете просматривать статистику, запрашивая представление pg_stat_statements.

select * from pg_stat_statements;
-- or
select * from pg_stat_statements where total_time / calls > 200; -- etc ..
Джоиши Бодио
источник
2

Как @JoishiBodio сказал, что вы можете использовать pg_stat_statementsрасширение, чтобы увидеть статистику медленных запросов. Для тех, кто борется с установкой (как я это сделал):

  1. Проверьте, есть ли pg_stat_statementsв списке доступных расширений:

    SELECT * FROM pg_available_extensions;
  2. Попробуйте установить postgresql-contribпакет через системный менеджер пакетов в Debian / Ubuntu:

    sudo apt-get install postgresql-contrib-9.5

Затем выполните шаг 1 снова.

  1. Добавить pg_stat_statementsв shared_preload_librariesконфигурации PostgreSQL:

через postgres.conf:

    shared_preload_libraries = 'pg_stat_statements'

через аргументы командной строки (без кавычек!):

    postgres -c shared_preload_libraries=pg_stat_statements
  1. Затем создайте расширение в базе данных:

    CREATE EXTENSION pg_stat_statements;
Андрей Семакин
источник