Controls the largest I/O size in operations that combine I/O.
At a glance
| Property | Value |
|---|---|
| Parameter | io_combine_limit |
| Category | Resource Consumption |
| Default | 128kB |
| Value type | integer |
| Change scope | Per-session (SET) |
| Available in | PostgreSQL 17, 18, 19 (added in 17) |
What it does
Controls the largest I/O size in operations that combine I/O. If set higher than the io_max_combine_limit parameter, the lower value will silently be used instead, so both may need to be raised to increase the I/O size. If this value is specified without units, it is taken as blocks, that is BLCKSZ bytes, typically 8kB. The maximum possible size depends on the operating system and block size, but is typically 1MB on Unix and 128kB on Windows. The default is 128kB.
(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_combine_limit; or SELECT name, setting, unit, context, source FROM pg_settings WHERE name = 'io_combine_limit';.
Tuning guidance
Larger values let the executor coalesce adjacent reads into bigger I/Os, helping sequential and bitmap scans on fast storage; the default is a sensible balance for most arrays.