PostgreSQL, как узнать, какие запросы были запущены - PullRequest
43 голосов
/ 21 ноября 2011

У меня есть БД PostgreSQL на моем компьютере, и у меня есть приложение, которое выполняет запросы к нему.

Как узнать, какие запросы выполнялись в моей БД?

Я использую компьютер с Linux и pgadmin.

Ответы [ 5 ]

49 голосов
/ 21 ноября 2011

Включить журнал сервера:

log_statement = all

Это будет регистрировать каждый вызов на сервер базы данных.

Я бы не использовал log_statement = all на производственном сервере. Производит огромные файлы журнала.
Руководство по лог-параметрам:

log_statement (enum)

Управляет записью операторов SQL. Допустимые значения: none (выкл.), ddl, mod и all (все операторы). [...]

Сброс параметра log_statement требует перезагрузки сервера (SIGHUP). Перезапуск не необходим. Прочтите руководство по настройке параметров .

Не путайте журнал сервера с журналом pgAdmin. Две разные вещи!

Вы также можете просмотреть файлы журнала сервера в pgAdmin, если у вас есть доступ к файлам (может быть, это не так с удаленным сервером), и правильно настроить его. Посмотрите на: Tools -> Server status. Подробнее об окне состояния сервера см. В руководстве для pgAdmin III .

Я предпочитаю читать файлы журнала сервера с помощью vim (или редактора / читателя по вашему выбору).

41 голосов
/ 21 ноября 2011

PostgreSql очень продвинут, когда связан с методами ведения журналов

Журналы хранятся в Installationfolder/data/pg_log folder.Настройки журнала хранятся в файле postgresql.conf.

Формат журнала обычно устанавливается как stderr.Но формат журнала CSV рекомендуется.Чтобы включить изменение формата CSV в

log_destination = 'stderr,csvlog'   
logging_collector = on

Для регистрации всех запросов, очень полезно для новых установок, установите мин.время выполнения запроса

log_min_duration_statement = 0

Чтобы просмотреть активные запросы в вашей базе данных, используйте

SELECT * FROM pg_stat_activity

Для регистрации определенных запросов установите тип запроса

log_statement = 'all'           # none, ddl, mod, all

Для получения дополнительной информации о журналировании запросов см. PostgreSql Log .

4 голосов
/ 01 мая 2017

Я нашел файл журнала по адресу /usr/local/var/log/postgres.log при установке Mac из brew.

0 голосов
/ 12 декабря 2018

В папке pg_log вы можете увидеть, включена ли конфигурация журнала в postgresql.conf с этим именем каталога журнала.

0 голосов
/ 12 декабря 2018

При использовании Django с postgres 10.6 ведение журнала было включено по умолчанию, и я смог просто сделать:

tail -f /var/log/postgresql/*

Ubuntu 18.04, django 2+, python3 +

...