У меня на компьютере есть база данных PostgreSQL, и у меня есть приложение, которое выполняет запросы к ней.
Как я могу увидеть, какие запросы выполнялись в моей БД?
Я использую компьютер с Linux и pgadmin.
У меня на компьютере есть база данных PostgreSQL, и у меня есть приложение, которое выполняет запросы к ней.
Как я могу увидеть, какие запросы выполнялись в моей БД?
Я использую компьютер с Linux и pgadmin.
Включите журнал сервера:
log_statement = all
Это будет регистрировать каждый вызов сервера базы данных.
Я бы не стал использовать log_statement = all
на производственном сервере. Создает огромные файлы журналов.
Руководство о параметрах логирования:
log_statement
(enum
)Управляет тем, какие операторы SQL записываются в журнал. Допустимые значения:
none
(выкл.),ddl
,mod
иall
(все операторы). [...]
Для сброса параметра log_statement
требуется перезагрузка сервера (SIGHUP
). Перезапуск не необходим. Прочтите руководство по настройке параметров.
Не путайте журнал сервера с журналом pgAdmin. Две разные вещи!
Вы также можете посмотреть файлы журнала сервера в pgAdmin, если у вас есть доступ к файлам (может быть, не в случае с удаленным сервером) и правильно его настроить. В pgadmin III посмотрите: Tools -> Server status
. Эта опция была удалена в pgadmin4.
Я предпочитаю читать файлы журнала сервера с помощью 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, django 2+, python3 +
В папке pg_log можно увидеть, включена ли конфигурация журнала в postgresql.conf с этим именем каталога журнала.