Приложение для мониторинга запросов PostgreSQL в режиме реального времени?
Я хочу отслеживать запросы, отправляемые в мою базу данных из приложения. С этой целью я нашел pg_stat_activity
, но чаще всего нет, строки, которые возвращаются, читаются "в транзакции". Я либо делаю что-то не так, не достаточно быстро, чтобы увидеть, что запросы приходят, запутались или все вышеперечисленное!
Может ли кто-то рекомендовать самый идиотский способ отслеживать запросы, запущенные против PostgreSQL? Я бы предпочел какое-то простое в использовании решение на основе пользовательского интерфейса (пример: SQL Server "Профайлер" ), но я не слишком разборчив.
Ответы
Ответ 1
С PostgreSQL 8.4 или выше вы можете использовать модуль contrib pg_stat_statements для сбора статистики выполнения запросов на сервере базы данных.
Запустите SQL script этого модуля contrib pg_stat_statements.sql
(в ubuntu его можно найти в /usr/share/postgresql/<version>/contrib
) в вашей базе данных и добавьте эту конфигурацию примера в ваш postgresql.conf
(требуется перезапуск):
custom_variable_classes = 'pg_stat_statements'
pg_stat_statements.max = 1000
pg_stat_statements.track = top # top,all,none
pg_stat_statements.save = off
Чтобы узнать, какие запросы выполняются в реальном времени, вы можете просто настроить журнал сервера, чтобы отображать все запросы или запросы с минимальным временем выполнения. Для этого установите параметры конфигурации ведения журнала log_statement
и log_min_duration_statement
в вашем postgresql.conf соответственно.
Ответ 2
PgAdmin предлагает довольно простой в использовании инструмент под названием серверный монитор
(Инструменты → ServerStatus)
Ответ 3
Я не пробовал это сам, к сожалению, но я думаю, что pgFouine может показать вам статистику.
Хотя, похоже, он не показывает ваши запросы в режиме реального времени, а скорее генерирует отчет о запросах впоследствии, возможно, он все еще удовлетворяет вашему требованию?
Вы можете взглянуть на
http://pgfouine.projects.postgresql.org/