bgwriter_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 |
background writer의 활동 라운드 사이 대기 시간을 정한다. 단위 없이 값을 주면 밀리초로 해석하며, 기본값은 200ms다.
background writer는 매 라운드마다 dirty buffer 일부를 디스크로 써낸 뒤(써낼 양은 bgwriter_lru_maxpages, bgwriter_lru_multiplier가 결정) bgwriter_delay만큼 잠들었다가 다시 깨어나기를 반복한다. buffer pool에 dirty buffer가 없으면 이 값과 무관하게 더 길게 잔다. background writer의 목적은 backend가 새 buffer를 요청했을 때 곧바로 재사용할 수 있는 깨끗한 buffer를 미리 확보해 두는 것으로, checkpoint가 주기적으로 dirty buffer를 한꺼번에 써내는 것과는 별개의 흐름이다. 일부 시스템에서는 sleep 지연의 실제 해상도가 10ms라서 10의 배수가 아닌 값은 바로 위 10의 배수와 같게 동작할 수 있다.
postgresql.conf나 서버 커맨드라인에서만 설정할 수 있다.
운영 노트: 값을 줄이면 background writer가 더 자주 깨어나 dirty buffer를 미리 써내므로 backend가 직접 write하는 빈도는 줄지만, 전체 I/O량은 늘어날 수 있다. 라운드당 쓰기량 상한인
bgwriter_lru_maxpages와 묶어서 조정해야 의미가 있다.출처: PostgreSQL 18 문서