Configuration parameter

io_max_concurrency — PostgreSQL configuration parameter

Category Resource Consumption

Controls the maximum number of I/O operations that one process can execute simultaneously.

At a glance

Property Value
Parameter io_max_concurrency
Category Resource Consumption
Default (see documentation)
Value type integer
Change scope Per-session (SET)
Available in PostgreSQL 18, 19 (added in 18)

What it does

Controls the maximum number of I/O operations that one process can execute simultaneously.

The default setting of -1 selects a number based on shared_buffers and the maximum number of processes (max_connections, autovacuum_worker_slots, max_worker_processes and max_wal_senders), but not more than 64.

(Description quoted from the official PostgreSQL documentation.)

How to apply a change

Can be set per session with SET, per role/database with ALTER ROLE/DATABASE ... SET, or globally in postgresql.conf.

Inspect the current value and source with SHOW io_max_concurrency; or SELECT name, setting, unit, context, source FROM pg_settings WHERE name = 'io_max_concurrency';.

Tuning guidance

Raise it on storage that benefits from many in-flight requests (NVMe, cloud block storage) so prefetch can saturate the device; too high wastes effort on a single slow disk.

Reference

PostgreSQL documentation — io_max_concurrency.

Keep going

Related & next steps

Was this helpful?

← All configuration parameters