PostgreSQL как узнать, какие запросы были выполнены

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

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

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


person kamaci    schedule 21.11.2011    source источник
comment
какие-либо подробности о том, как выглядит ваше приложение и как оно обращается к базе данных?   -  person pavel_kazlou    schedule 21.11.2011


Ответы (5)


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

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 (или любого другого редактора / читателя по вашему выбору).

person Erwin Brandstetter    schedule 21.11.2011
comment
Brandstetter Я просто посмотрю логи и выключу. Достаточно ли просто сделать log_statement = all? Я открыл статус сервера, он спросил меня об установке пакета, но он открыл окно и пишет: Журналы недоступны для этого сервера. Стоит ли перезапустить свой postgresql? - person kamaci; 21.11.2011
comment
@kamaci: Я добавил в свой ответ дополнительную информацию. Следуйте по ссылкам, которые я предоставил, чтобы узнать больше. - person Erwin Brandstetter; 21.11.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 < / а>.

person arvind    schedule 21.11.2011

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

person Michael    schedule 30.04.2017

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

tail -f /var/log/postgresql/*

Ubuntu 18.04, django 2+, python3 +

person jmunsch    schedule 12.12.2018
comment
Кажется, это только журнальные вставки и запросы, которые не прошли с ошибкой, тем не менее, полезный ответ. - person peterchaula; 15.12.2020

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

person s21s    schedule 12.12.2018