У меня на моем компьютере есть PostgreSQL DB, и у меня есть приложение, которое запускает запросы на нем.
Как я могу посмотреть, какие запросы выполнялись в моей БД?
Я использую компьютер Linux и pgadmin.
У меня на моем компьютере есть PostgreSQL DB, и у меня есть приложение, которое запускает запросы на нем.
Как я могу посмотреть, какие запросы выполнялись в моей БД?
Я использую компьютер Linux и pgadmin.
Включите журнал сервера:
log_statement = all
Это будет регистрировать каждый звонок на сервер базы данных.
Я бы не использовал log_statement = all
на производительном сервере. Производит огромные файлы журнала.
Руководство по регистрации параметров:
log_statement
(enum
)Управляет тем, какие операторы SQL регистрируются. Допустимые значения:
none
(off),ddl
,mod
иall
(все операторы). [...]
Сброс параметра log_statement
требует перезагрузки сервера (SIGHUP
). Перезагрузка не нужна. Прочтите руководство по настройке параметров.
Не путайте журнал сервера с журналом pgAdmin. Две разные вещи!
Вы также можете посмотреть файлы журнала сервера в pgAdmin, если у вас есть доступ к файлам (может быть, это не так с удаленным сервером), и правильно настроить его. Взгляните на: Tools → Server status
. Узнайте больше об окне состояния сервера в руководстве для pgAdmin III.
Я предпочитаю читать файлы журнала сервера с помощью vim
(или редактора/читателя по вашему выбору).
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.
Я нашел файл журнала в /usr/local/var/log/postgres.log на установке mac из brew.
При использовании Django с postgres 10.6 ведение журнала было включено по умолчанию, и я смог просто сделать:
tail -f /var/log/postgresql/*
Ubuntu 18.04, джанго 2+, python3+
В папке pg_log вы можете увидеть, включена ли конфигурация журнала в postgresql.conf с этим именем каталога журнала.