Параметр log_min_duration_statement игнорируется

15

Я бегу Postgresql 9.1на Ubuntu. Точная версия Postgresql, 9.1+129ubuntu1как показывает мой менеджер пакетов.

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

Я хочу регистрировать запросы, которые имеют длительное время выполнения. Поэтому я установил следующие параметры в /etc/postgresql/9.1/main/postgresql.confфайле

log_min_duration_statement = 10000
log_statement = 'mod'

поэтому Postgresql будет регистрировать запросы, которые занимают более 10 секунд.

Но когда я reloadнастраиваю postgres, Postgresql начинает регистрировать каждый запрос, который соответствует log_statementзначению. Чтобы я установил длительность 100 секунд, чтобы быть уверенным

log_min_duration_statement = 100000

Но Postgresql продолжает регистрировать каждый запрос, который соответствует log_statementзначению, независимо от log_min_duration_statementзначения.

Установка log_statementдля , noneказалось , чтобы остановить регистрацию.

Есть что-то, что я пропустил в конфигурации?

Падший ангел
источник
Дело в том, что вы регистрируете объединение двух наборов, а не их пересечение. Я не знаю, можно ли это сделать так, как вы хотите.
Дезсо,
Итак, я должен отключить (закомментировать) log_statementтак log_min_duration_statementдолжно работать?
FallenAngel
Если вы просто хотите , чтобы регистрировать все долго выполняющихся операторов (будь это SELECT, UPDATEили какой - либо DDL), то да.
Дезсо,

Ответы:

21

Вы были близки Ваша последняя идея на самом деле путь:

log_statement = none
log_min_duration_statement = 10000

Тогда никакие операторы не будут регистрироваться, кроме тех, которые выполняются дольше 10 секунд, включая саму строку запроса. Регистрация, возможно, остановилась, потому что 10 секунд - это высокий порог. Я использую 2 секунды нормально, но YMMV.

Этот связанный ответ на SO имеет больше:
Не удается заставить log_min_duration_statement работать

Эрвин Брандштеттер
источник
3
Позвольте мне добавить, что значение по умолчанию для log_statementis none, поэтому не установка его или установка noneимеет тот же эффект.
Дезсо