Назад | Перейти на главную страницу

Журнал postgresql запрашивает отдельную базу данных

Я использую PostgreSQL (8.3) с несколькими базами данных ... Мне интересно, есть ли способ регистрировать сделанные запросы только в одной из баз (не во всех).

Или иметь один файл журнала для каждой базы данных ...

Я знаю, что могу использовать log_line_prefix = "%d" чтобы зарегистрировать имя базы данных, а затем выполнить фильтрацию, но проблема не в этом.

Может, мне стоит использовать log_analyzer, чтобы обойти это? У вас есть какие-нибудь рекомендации ?

Спасибо

Да, это возможно, вы можете установить параметр конфигурации log_statement на базу данных:

ALTER DATABASE your_database_name
SET log_statement = 'all';

Если вы регистрируете операторы через Postgres, у меня нет способа сделать это для каждой базы данных, о которой я знаю (за исключением написания представления, которое вызывает триггер ведения журнала для каждый стол - явно нереально).

Лучшее доступное решение - это то, что вы описали (префикс каждой строки с именем базы данных) и передать данные во что-то вроде syslog-ng для разделения журнала запросов на каждую базу данных.

Пост-обработка файла журнала также является вариантом, но следует помнить о потенциальных проблемах (ограничения максимального размера файла ОС / файловой системы, нехватка дискового пространства) для кластеров баз данных, которые имеют большое количество запросов.
Также обратите внимание, что вы платите штраф за производительность за регистрацию всех запросов - насколько велик штраф зависит от того, насколько велики запросы ...