본문으로 건너뛰기
log_min_duration_sample

log_min_duration_sample

버전기본값context타입
14superuserinteger
15superuserinteger
16superuserinteger
17superuserinteger
18superuserinteger
19superuserinteger

지정한 시간 이상 실행된 statement를 sampling 대상으로 삼아, 그중 일부만 duration을 log에 남긴다.

log_min_duration_statement와 같은 형식의 log 항목을 만들지만, 실행된 statement 전체가 아니라 표본만 기록한다는 점이 다르다. 예를 들어 100ms로 설정하면 100ms 이상 걸린 모든 SQL statement가 sampling 후보가 되고, 그중 실제로 기록되는 비율은 log_statement_sample_rate가 정한다. 트래픽이 많아 조건에 걸리는 쿼리를 전부 log로 남기기 어려운 환경에서 유용하다.

단위 없이 값을 주면 밀리초로 해석한다. 0이면 모든 statement duration이 sampling 대상이 되고, -1(기본값)이면 sampling을 하지 않는다. 이 설정은 log_min_duration_statement보다 우선순위가 낮다. 즉 duration이 log_min_duration_statement를 넘는 statement는 sampling 여부와 무관하게 항상 기록된다.

운영 노트: 고트래픽 서비스라면 log_min_duration_statement는 높게(예: 1s) 잡아 확실한 slow query를 전부 남기고, 이 값은 낮게(예: 100ms) 잡은 뒤 log_statement_sample_rate로 표본 비율을 조절하는 2단 구성이 실용적이다. log 볼륨을 억제하면서도 중간 구간 쿼리의 분포를 관찰할 수 있다.

출처: PostgreSQL 18 문서