Мне нужно просмотреть запросы, отправленные на сервер PostgreSQL. Обычно я использовал профилировщик SQL Server для выполнения этого действия на землях SQL Server, но мне еще предстоит найти, как это сделать в PostgreSQL. Похоже, что есть довольно много платных инструментов, я надеюсь, что есть вариант с открытым исходным кодом.
Есть ли эквивалент PostgreSQL для профилировщика SQL Server?
Ответ 1
Вы можете использовать параметр конфигурации log_statement, чтобы получить список всех запросов на сервере
https://www.postgresql.org/docs/current/static/runtime-config-logging.html#guc-log-statement
Просто установите это и путь к файлу ведения журнала, и у вас будет список. Вы также можете настроить его для ведения только длинных запросов.
Затем вы можете выполнить эти запросы и запустить EXPLAIN, чтобы узнать, что происходит с ними.
http://www.designmagick.com/article/23/Using-Explain/Using-Explain/page/2
Ответ 2
Добавив к Joshua ответ, чтобы увидеть которые в настоящее время выполняются запросы, просто выпустите следующий оператор в любое время (например, в окне запроса PGAdminIII):
SELECT datname,procpid,current_query FROM pg_stat_activity;
Пример вывода:
datname | procpid | current_query
---------------+---------+---------------
mydatabaseabc | 2587 | <IDLE>
anotherdb | 15726 | SELECT * FROM users WHERE id=123 ;
mydatabaseabc | 15851 | <IDLE>
(3 rows)
Ответ 3
Я обнаружил pgBadger (http://dalibo.github.io/pgbadger/), и это фантастический инструмент, который много раз спасал мою жизнь. Вот пример отчета: http://dalibo.github.io/pgbadger/samplev4.html. Если вы откроете его и перейдете в "верхнее" меню, вы увидите самые медленные запросы и трудоемкие запросы. Затем вы можете запросить детали и увидеть хорошие графики, которые показывают вам запросы по часам, и если вы используете кнопку подробностей, вы можете увидеть текст SQL в симпатичной форме. Поэтому я вижу, что этот инструмент свободен и совершенен.
Ответ 4
Добавление к Джошуа и Владру ответ
Это работает для меня:
Откройте postgresql.conf
Set:
log_statement = 'mod'
log_min_messages = debug2
Откройте последний журнал в папке C:\Program Files\PostgreSQL\9.6\data\pg_log\
Запросы будут доступны.
Я использую postgresql-9.6.5-1