본문으로 건너뛰기
autovacuum_max_workers

autovacuum_max_workers

버전기본값context타입
14threepostmaster (재시작)integer
15threepostmaster (재시작)integer
16threepostmaster (재시작)integer
17threepostmaster (재시작)integer
183sighupinteger
193sighupinteger

동시에 실행될 수 있는 autovacuum worker 프로세스의 최대 개수를 정한다(autovacuum launcher는 별도). 기본값은 3이다.

worker 수가 부족하면 vacuum 대상 테이블이 많을 때 대기열이 밀려 bloat 정리가 늦어지고, 너무 많으면 vacuum I/O가 서비스 부하와 경합한다. 한 가지 주의할 점은 cost-based delay와의 관계다. autovacuum_vacuum_cost_limit은 실행 중인 worker들에게 비례 배분되므로, worker 수를 늘려도 cost limit을 함께 올리지 않으면 전체 vacuum 처리량은 그대로이고 worker 하나하나만 느려진다.

PostgreSQL 18부터는 이 값을 postgresql.conf reload로 바꿀 수 있다. 다만 실제 worker는 서버 시작 시 autovacuum_worker_slots로 예약된 slot 풀에서 나오므로, autovacuum_worker_slots보다 큰 값을 줘도 그 초과분은 효과가 없다. 17 이하에서는 서버 재시작이 필요했다.

운영 노트: 데이터베이스와 테이블 수가 많은 인스턴스에서 vacuum이 만성적으로 밀린다면 worker 수 증설을 검토하되, autovacuum_vacuum_cost_limit을 같은 비율로 올려야 실질 처리량이 늘어난다. PostgreSQL 18에서는 slot에 여유를 두고(autovacuum_worker_slots) 필요할 때 이 값만 reload로 조정하는 운영이 가능하다.

출처: PostgreSQL 18 문서