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

Можно ли получить историю запросов, сделанных в postgres

Можно ли получить историю запросов, сделанных в postgres? и можно ли получить время, затраченное на каждый запрос? В настоящее время я пытаюсь определить медленные запросы в приложении, над которым я работаю.

Я использую Postgres 8.3.5

4b9b3361

Ответ 1

В самой базе данных нет истории, если вы используете psql, вы можете использовать "\ s", чтобы увидеть там свою историю команд.

Вы можете получить будущие запросы или другие типы операций в файлах журнала, установив log_statement в файле postgresql.conf. Вместо этого вы, скорее всего, захотите log_min_duration_statement, который, если вы установите его на 0, будет регистрировать все запросы и их длительность в журналах. Это может быть полезно после того, как ваши приложения будут работать вживую, если вы установите более высокое значение, вы увидите только длинные запросы, которые могут быть полезны для оптимизации (вы можете запустить EXPLAIN ANALYZE на запросах, которые вы найдете там, чтобы выяснить, почему они медленно).

Еще одна полезная вещь, которую нужно знать в этой области, заключается в том, что если вы запустите psql и скажете "\ timing", он покажет, сколько времени займет каждый оператор после этого. Поэтому, если у вас есть файл sql, который выглядит так:

\timing
select 1;

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

$ psql -ef test.sql 
Timing is on.
select 1;
 ?column? 
----------
        1
(1 row)

Time: 1.196 ms

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

Ответ 2

Если вы хотите идентифицировать медленные запросы, чем , метод должен использовать параметр log_min_duration_statement (в postgresql. conf или установить для каждой базы данных с помощью ALTER DATABASE SET).

Когда вы регистрируете данные, вы можете использовать grep или некоторые специализированные инструменты - например, pgFouine или мои собственные анализатор - в котором отсутствуют надлежащие документы, но, несмотря на это, выполняется довольно хорошо.

Ответ 3

pgBadger - еще один вариант - также перечисленный здесь: https://github.com/dhamaniasad/awesome-postgres#utilities

Требуется некоторая дополнительная настройка для захвата необходимых данных в журналах postgres, но см. официальный сайт.

Ответ 4

FYI для тех, кто использует UI Navicat:

Вы должны установить свои предпочтения для использования файла как where для хранения истории.

Если это пусто, ваш Navicat будет пустым.

введите описание изображения здесь

PS: У меня нет связи с Navicat или ее веткими или нет. Просто хочу помочь.

Ответ 5

Вы можете использовать DATAGRIP IDE. Он хранит историю последних 300 запросов (на ноябрь 2018).

Однако это не будет показывать производительность запросов. Только их история