Существует ли в PostgreSQL аналог профилировщика SQL Server? - PullRequest
70 голосов
/ 12 марта 2010

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

Ответы [ 5 ]

49 голосов
/ 12 марта 2010

Вы можете использовать параметр конфигурации log_statement, чтобы получить список всех запросов к серверу.

https://www.postgresql.org/docs/current/static/runtime-config-logging.html#guc-log-statement

Просто установите это, и путь к файлу журнала, и вы получитесписок.Вы также можете настроить его для регистрации только длинных запросов.

Затем вы можете взять эти запросы и запустить EXPLAIN для них, чтобы выяснить, что с ними происходит.

https://www.postgresql.org/docs/9.2/static/using-explain.html

28 голосов
/ 12 марта 2010

В добавлении к ответу Джошуа, чтобы увидеть , какие запросы в данный момент выполняются , просто в любое время введите следующую инструкцию (например, в окне запросов 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)
22 голосов
/ 13 февраля 2014

Я обнаружил pgBadger (http://dalibo.github.io/pgbadger/)), и это фантастический инструмент, который много раз спас мне жизнь. Вот пример отчета: http://dalibo.github.io/pgbadger/samplev4.html. Если вы откроете его и перейдете в «верхнее» меню, вы увидите самые медленные запросы и запросы, требующие много времени. Затем вы можете спросить детали и увидеть красивые графики, которые показывают вам запросы по часам, и если вы используете кнопку детализации, вы можете увидеть текст SQL в красивой форме. Итак, я вижу, что этот инструмент бесплатный и совершенный.

5 голосов
/ 07 апреля 2018

Мне нужно увидеть запросы, отправленные на сервер PostgreSQL

Как вариант, если вы используете pgAdmin (на моей картинке это pgAdmin 4 v2.1). Вы можете наблюдать за запросами на вкладке «Панель инструментов»: pgadmin4 query from application, dashboard

0 голосов
/ 04 октября 2017

Добавление к ответу Иисуса Навина и Владыки

У меня работает:

Открыть postgresql.conf

Set:

log_statement = 'mod'

log_min_messages = debug2

Открыть последний журнал в папке C: \ Program Files \ PostgreSQL \ 9.6 \ data \ pg_log \

Запросы будут там.

Я использую postgresql-9.6.5-1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...