Моя база данных запускает много разных запросов. Я установил log_min_duration_statement
на 1000. Но запросы, зарегистрированные там, не всегда медленные, в большинстве случаев они занимают всего несколько мс.
Можно ли получить статистику по всем запросам, и как часто они занимают более 1000 мс?
postgresql
performance
user2047809
источник
источник
Ответы:
Установите расширение pg_stat_statements с помощью команды SQL
CREATE EXTENSION pg_stat_statements
Возможно, вы захотите убедиться, что вы создали его, используя соответствующего пользователя (например, пользователя, которого использует ваше приложение, или какую-то учетную запись dba). Имейте в виду, что любой пользователь, создавший расширение, также будет его владельцем.
Для этого потребуется перезапуск сервера, чтобы он был пригоден для использования (поскольку вам нужно немного изменить конфигурацию в postgresql.conf, что влияет на потребление памяти), но он даст вам статистику по всем запросам.
Пожалуйста, смотрите страницу документации для получения дополнительной информации о том, что предоставляет pg_stat_statements. Смотрите здесь краткий справочник по настройке конфигурационного файла postgresql.conf для pg_stat_statements.
После того, как он установлен и запущен, вы можете просматривать статистику, запрашивая представление pg_stat_statements.
источник
Как @JoishiBodio сказал, что вы можете использовать
pg_stat_statements
расширение, чтобы увидеть статистику медленных запросов. Для тех, кто борется с установкой (как я это сделал):Проверьте, есть ли
pg_stat_statements
в списке доступных расширений:Попробуйте установить
postgresql-contrib
пакет через системный менеджер пакетов в Debian / Ubuntu:Затем выполните шаг 1 снова.
pg_stat_statements
вshared_preload_libraries
конфигурации PostgreSQL:через
postgres.conf
:через аргументы командной строки (без кавычек!):
Затем создайте расширение в базе данных:
источник