wal_buffers
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | — | postmaster (재시작) | integer |
| 15 | — | postmaster (재시작) | integer |
| 16 | — | postmaster (재시작) | integer |
| 17 | — | postmaster (재시작) | integer |
| 18 | — | postmaster (재시작) | integer |
| 19 | — | postmaster (재시작) | integer |
아직 디스크에 쓰이지 않은 WAL 데이터를 담아 두는 shared memory의 크기를 정한다. 서버 시작 시에만 설정할 수 있다.
기본값 -1은 shared_buffers의 1/32(약 3%)에 해당하는 크기를 자동으로 선택하되, 64kB보다 작아지거나 WAL segment 하나의 크기(보통 16MB)보다 커지지는 않는다. 자동 선택된 값이 너무 크거나 작으면 수동으로 지정할 수 있지만, 32kB 미만의 양수는 32kB로 처리된다. 단위 없이 지정하면 WAL 블록(XLOG_BLCKSZ, 보통 8kB) 단위로 해석한다.
WAL buffer의 내용은 매 트랜잭션 commit마다 디스크로 쓰이므로 값을 극단적으로 키워도 큰 이득은 없다. 다만 많은 클라이언트가 동시에 commit하는 바쁜 서버에서는 최소 몇 MB 수준으로 잡아 주면 쓰기 성능이 개선될 수 있다. 대부분의 환경에서는 기본값 -1의 자동 튜닝으로 충분하다.
운영 노트:
shared_buffers가 512MB 이상이면 자동 계산 값이 상한(WAL segment 크기, 보통 16MB)에 도달한다. pg_stat_wal의 wal_buffers_full 수치가 꾸준히 증가한다면 buffer가 부족하다는 신호이므로 값을 명시적으로 키우는 것을 검토한다.출처: PostgreSQL 18 문서