DB Internals AtlasPostgreSQL 18.6 Home About

Parameter · Resource Usage / I/O

maintenance_io_concurrency

A variant of "effective_io_concurrency" that is used for maintenance work. 0 disables simultaneous requests.

  • Default: 16
  • Type: integer
  • Range: 0 … 1000
  • Applies: Session (any user)

In plain words

The same idea as effective_io_concurrency, but for work done on behalf of many sessions: VACUUM, ANALYZE, recovery prefetching on standbys, and similar. Higher values let these jobs read faster on storage that handles many parallel requests.

For DBAs and operators

Default raised from 10 to 16 in PostgreSQL 18. Used by VACUUM's heap scan (read stream, PostgreSQL 18), ANALYZE block sampling prefetch, recovery_prefetch on standbys/crash recovery, and the B-tree, GiST and SP-GiST index vacuum scans. Can be overridden per tablespace. On fast storage, raising it (64–256) speeds up big vacuums and replay; note that a throttled autovacuum is usually limited by cost-based delay, not by I/O depth, so check that first.

How to change it

Any user can change it for their session with SET.

See it in context

Asynchronous I/O VACUUM Crash recovery Startup process I/O workers

Related parameters

effective_io_concurrency recovery_prefetch io_method vacuum_cost_limit

All Resource Usage parameters