max_wal_size
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | 1 GB | sighup | integer |
| 15 | 1 GB | sighup | integer |
| 16 | 1 GB | sighup | integer |
| 17 | 1 GB | sighup | integer |
| 18 | 1 GB | sighup | integer |
| 19 | 1 GB | sighup | integer |
자동 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 문서