Существует ли PostgreSQL эквивалент SQL Server profiler?
Мне нужно увидеть запросы, отправленные на сервер PostgreSQL. Обычно я бы использовал SQL Server profiler для выполнения этого действия в SQL Server land, но мне еще предстоит найти, как это сделать в PostgreSQL. Там, кажется, довольно много платных инструментов, я надеюсь, что есть вариант с открытым исходным кодом.
5 ответов:
вы можете использовать log_statement config параметр, чтобы получить список всех запросов к серверу
https://www.postgresql.org/docs/current/static/runtime-config-logging.html#guc-log-statement
просто установите это, и путь к файлу журнала, и у вас будет список. Вы также можете настроить его только для регистрации длительных запросов.
затем вы можете взять эти запросы и запустить объяснить на них, чтобы узнать, что происходит с их.
https://www.postgresql.org/docs/9.2/static/using-explain.html
добавление к ответу Джошуа, чтобы увидеть какие запросы в настоящее время выполняются просто выполните следующее заявление в любое время (например, в окне запроса 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)
Я обнаружил pgBadger (http://dalibo.github.io/pgbadger/) и это фантастический инструмент, который много раз спасал мне жизнь. Вот пример отчета:http://dalibo.github.io/pgbadger/samplev4.html. Если вы откроете его и перейдете в меню "сверху", вы увидите самые медленные запросы и запросы, занимающие много времени. Затем вы можете задать детали и посмотреть хорошие графики, которые показывают вам запросы по часам, и если вы используете кнопку detail, вы можете увидеть текст SQL в красивой форме. Так что я могу видим, что этот инструмент является бесплатным и отлично.
добавление к ответу
Это работает для меня:
открыть postgresql.conf
Set:
log_statement = 'mod'
log_min_messages = debug2
открыть последний журнал в папку C:\Program файлы\PostgreSQL\9.6\data\pg_log\
запросы будут там.
Я использую postgresql-9.6.5-1

Comments