본문으로 건너뛰기
maintenance_work_mem

maintenance_work_mem

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

VACUUM, CREATE INDEX, ALTER TABLE ADD FOREIGN KEY 같은 유지보수 작업이 사용할 수 있는 메모리 상한을 정한다. 단위 없이 값을 주면 킬로바이트로 해석하며, 기본값은 64MB다.

이런 유지보수 작업은 한 세션에서 동시에 하나만 실행되고, 보통 한 서버에서 여러 개가 한꺼번에 도는 일도 드물다. 그래서 work_mem보다 훨씬 크게 잡아도 안전하다. 값을 키우면 vacuum 속도가 빨라지고, 덤프를 복원할 때 인덱스 생성 같은 작업도 빨라진다.

다만 autovacuum이 돌 때는 worker마다 이 메모리가 할당될 수 있다. 즉 최대 autovacuum_max_workers 배만큼 메모리를 쓸 수 있으므로, autovacuum까지 고려하면 무작정 크게 잡는 것은 위험하다. autovacuum worker에만 다른 한도를 주고 싶다면 autovacuum_work_mem을 따로 설정해 분리할 수 있다.

운영 노트: 인덱스 재생성이나 대량 데이터 적재 같은 일회성 작업에서는 세션 단위로 maintenance_work_mem을 크게 올려 시간을 단축하고, 전역 기본값은 autovacuum worker 수와 곱해서 메모리가 감당되는 선으로 잡는 것이 무난하다.

출처: PostgreSQL 18 문서