maintenance_io_concurrency
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | 10 on supported systems | user | integer |
| 15 | 10 on supported systems | user | integer |
| 16 | 10 on supported systems | user | integer |
| 17 | 10 on supported systems | user | integer |
| 18 | 16 | user | integer |
| 19 | 16 | user | integer |
effective_io_concurrency와 같은 역할을 하지만, 여러 클라이언트 세션을 위해 수행되는 유지보수성 작업에 적용되는 동시 I/O 요청 수를 정한다. 기본값은 16이다.
effective_io_concurrency가 일반 쿼리 실행에서 미리 읽어올(prefetch) 동시 I/O 수를 정한다면, maintenance_io_concurrency는 vacuum처럼 특정 세션 하나가 아니라 시스템 전체를 위해 도는 작업에 쓰인다. 이런 작업은 빨리 끝날수록 모두에게 이득이므로 기본값도 effective_io_concurrency(기본 1)보다 높게 잡혀 있다.
테이블이 놓인 tablespace 단위로 값을 다르게 주고 싶다면 ALTER TABLESPACE ... SET (maintenance_io_concurrency = ...)으로 같은 이름의 tablespace 파라미터를 설정해 재정의할 수 있다.
운영 노트: 스토리지가 SSD나 NVMe처럼 동시 I/O를 잘 받아주는 환경이라면 값을 올려 vacuum 같은 유지보수 작업의 I/O 대기 시간을 줄일 수 있다. 반대로 HDD 기반이라면 기본값 수준으로 두는 편이 무난하다.
출처: PostgreSQL 18 문서