wal_compression
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | off | superuser | boolean |
| 15 | off | superuser | enum |
| 16 | off | superuser | enum |
| 17 | off | superuser | enum |
| 18 | off | superuser | enum |
| 19 | off | superuser | enum |
WAL에 기록되는 full page image를 지정한 방식으로 압축한다. 기본값은 off다.
활성화하면 full_page_writes가 켜져 있을 때나 base backup 중일 때 등 WAL에 쓰이는 full page image를 압축하고, WAL replay 시점에 압축을 푼다. 지원하는 방식은 pglz, lz4(--with-lz4로 빌드된 경우), zstd(--with-zstd로 빌드된 경우)다. PostgreSQL 14까지는 on/off boolean으로 pglz만 쓸 수 있었고, 15부터 lz4·zstd를 선택할 수 있다. superuser 또는 적절한 SET 권한이 있는 사용자만 바꿀 수 있다.
압축을 켜면 복구 불가능한 데이터 손상 위험을 높이지 않으면서 WAL 볼륨을 줄일 수 있다. 그 대가로 WAL 기록 시 압축에, replay 시 해제에 CPU를 추가로 쓴다. checkpoint 직후에는 페이지 첫 수정마다 full page image가 기록돼 WAL에서 차지하는 비중이 크므로, 쓰기가 많은 워크로드일수록 효과가 크다.
운영 노트: WAL 볼륨 때문에 archive 저장 공간이나 replication 대역폭이 부담이라면
lz4가 무난한 출발점이다. pglz보다 CPU를 적게 쓰면서 압축·해제가 빠르다. zstd는 압축률이 더 높은 대신 CPU를 더 쓴다.출처: PostgreSQL 18 문서