Подтвердить что ты не робот

Есть ли эквивалент PostgreSQL для профилировщика SQL Server?

Мне нужно просмотреть запросы, отправленные на сервер PostgreSQL. Обычно я использовал профилировщик SQL Server для выполнения этого действия на землях SQL Server, но мне еще предстоит найти, как это сделать в PostgreSQL. Похоже, что есть довольно много платных инструментов, я надеюсь, что есть вариант с открытым исходным кодом.

4b9b3361

Ответ 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