log_min_duration_statement 설정이 무시됩니다


15

Postgresql 9.1우분투에서 뛰고 있습니다. 정확한 Postgresql 버전은 9.1+129ubuntu1패키지 관리자가 보여주는 것과 같습니다.

적극적으로 사용중인 2 개의 데이터베이스가 있으며 원격 서버에서 사용됩니다.

실행 시간이 긴 쿼리를 기록하고 싶습니다. 그래서 /etc/postgresql/9.1/main/postgresql.conf파일에 다음 매개 변수를 설정했습니다.

log_min_duration_statement = 10000
log_statement = 'mod'

따라서 Postgresql은 10 초 이상 걸리는 쿼리를 기록합니다.

그러나 reloadpostgres 구성시 Postgresql은 log_statement가치 에 맞는 모든 쿼리를 기록하기 시작 합니다. 확실하게 지속 시간을 100 초로 설정했습니다.

log_min_duration_statement = 100000

그러나 Postgresql은 log_statement가치에 관계없이 가치에 맞는 모든 쿼리를 계속 기록 log_min_duration_statement합니다.

설정 log_statementnone로깅을 중지하는 것 같았다.

구성에 대해 놓친 것이 있습니까?


문제는 두 집합의 교집합이 아니라 두 집합의 합집합을 기록한다는 것입니다. 원하는대로 할 수 있는지 모르겠습니다.
dezso

그래서, 비활성화 (코멘트 아웃) 해야합니까? log_statement그렇습니다 log_min_duration_statement.
FallenAngel

오래 실행되는 모든 문장 ( SELECT, UPDATE또는 일부 DDL) 을 단순히 기록하려면 예입니다.
dezso

답변:


21

당신은 가까이있었습니다. 마지막 아이디어는 실제로 갈 길입니다.

log_statement = none
log_min_duration_statement = 10000

그런 다음 쿼리 문자열 자체를 포함하여 10 초 이상 실행되는 명령문을 제외하고는 명령문이 기록되지 않습니다. 10 초가 높은 임계 값이므로 로깅이 중지 된 것 같습니다. 정상적으로 2 초를 사용하고 있지만 YMMV입니다.

SO에 대한 관련 답변은 더 있습니다 :
log_min_duration_statement를 작동시킬 수 없습니다


3
에 대한 기본값 log_statementnone이므로 추가하지 않도록 설정하거나 설정해도 none같은 효과가 있습니다.
dezso
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.