wal_writer_delay
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | 200 milliseconds ( 200ms ) | sighup | integer |
| 15 | 200 milliseconds ( 200ms ) | sighup | integer |
| 16 | 200 milliseconds ( 200ms ) | sighup | integer |
| 17 | 200 milliseconds ( 200ms ) | sighup | integer |
| 18 | 200 milliseconds ( 200ms ) | sighup | integer |
| 19 | 200 milliseconds ( 200ms ) | sighup | integer |
WAL writer가 WAL을 flush하는 주기를 시간 기준으로 정한다. 단위 없이 지정하면 밀리초로 해석하며 기본값은 200ms다. postgresql.conf나 서버 커맨드라인에서만 설정할 수 있다.
WAL writer는 flush를 마친 뒤 wal_writer_delay만큼 잠들며, 비동기 commit 트랜잭션이 깨우면 더 일찍 일어난다. 마지막 flush가 wal_writer_delay 이내에 있었고 그 사이 생성된 WAL이 wal_writer_flush_after보다 적으면, WAL은 운영체제에 write만 되고 디스크로 flush되지는 않는다. synchronous_commit=off인 트랜잭션이 crash 시 잃을 수 있는 최대 구간이 이 값의 3배라는 점에서도 의미가 있는 파라미터다.
일부 시스템에서는 sleep 지연의 유효 해상도가 10ms라서, 10의 배수가 아닌 값을 지정하면 그다음 10의 배수로 올린 것과 같은 결과가 될 수 있다.
출처: PostgreSQL 18 문서