본문으로 건너뛰기

max_wal_size

버전기본값context타입
141 GBsighupinteger
151 GBsighupinteger
161 GBsighupinteger
171 GBsighupinteger
181 GBsighupinteger
191 GBsighupinteger

자동 checkpoint 사이에 WAL이 커질 수 있는 최대 크기를 정한다. 단위 없이 값을 주면 메가바이트로 해석하며, 기본값은 1GB다. 이 파라미터는 postgresql.conf나 서버 커맨드라인에서만 설정할 수 있다.

이 값은 soft limit이다. 즉 부하가 심하거나 archive_command/archive_library가 실패하거나 wal_keep_size가 높게 잡힌 경우 같은 특수 상황에서는 WAL이 max_wal_size를 넘어서기도 한다. PostgreSQL은 WAL 누적량이 이 값에 가까워지면 checkpoint를 앞당겨 디스크에 변경분을 반영하고 WAL을 정리한다.

값을 크게 잡으면 checkpoint가 더 뜸하게 일어나 평소 I/O 부담이 줄지만, 그만큼 누적된 WAL을 재생해야 하므로 crash recovery에 걸리는 시간이 늘어난다. 반대로 너무 작으면 checkpoint가 잦아져 I/O 부하가 커진다.

운영 노트: 쓰기 부하가 큰 시스템에서 checkpoint가 너무 자주 발생한다면 max_wal_size를 키워 checkpoint 간격을 늘리는 것이 효과적이다. 다만 복구 시간 목표(RTO)와 함께 균형을 맞춰야 한다.

출처: PostgreSQL 18 문서