vacuum_max_eager_freeze_failure_rate
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 18 | 0 | sighup | string |
| 19 | 0 | sighup | string |
vacuum의 eager scanning이 all-frozen 처리에 실패해도 계속 시도할 수 있는 페이지 수를 relation 전체 페이지 대비 비율로 정한다. 실패가 이 비율에 도달하면 eager scanning이 꺼진다. 기본값은 0.03(3%)이고, 0으로 설정하면 eager scanning 자체가 비활성화된다.
PostgreSQL 18에서 도입된 eager freeze 동작을 제어한다. 일반 vacuum은 all-visible로 표시된 페이지를 건너뛰기 때문에, freeze 작업이 계속 미뤄지다가 aggressive vacuum(anti-wraparound vacuum 포함) 한 번에 몰리는 문제가 있었다. eager scanning은 일반 vacuum이 all-visible이지만 아직 all-frozen이 아닌 페이지 일부를 미리 스캔해 freeze를 시도함으로써 이 부담을 평소에 분산시킨다. 이 파라미터는 그 시도의 손절 기준이다. freeze에 실패한 페이지만 상한에 집계되며, 성공한 freeze는 별도로 내부에서 all-visible·not-all-frozen 페이지의 20%까지로 제한된다. 성공분까지 제한하는 이유는 곧 다시 수정될 페이지를 미리 freeze해서 낭비하는 비용을 줄이고, 작업을 여러 번의 일반 vacuum에 걸쳐 분산하기 위해서다. postgresql.conf나 서버 커맨드라인에서 설정하며, 개별 테이블의 storage parameter로 덮어쓸 수 있다.
출처: PostgreSQL 18 문서