DB Internals AtlasPostgreSQL 18.6 Home About

Parameter · Resource Usage / I/O

io_combine_limit

Limit on the size of data reads and writes.

  • Default: 128kB
  • Type: integer (8kB)
  • Range: 8kB … 1MB
  • Applies: Session (any user)

In plain words

When PostgreSQL reads many neighbouring blocks, for example in a sequential scan, it can merge them into one bigger read instead of many 8 kB reads. This sets the largest such read. Bigger reads mean fewer system calls and better use of the disk.

For DBAs and operators

Added in PostgreSQL 17 with the read stream API (then capped at 256 kB); in PostgreSQL 18 it can go up to 1 MB (128 blocks) but is silently limited by the server-wide io_max_combine_limit, so both must be raised. Used by sequential scans, ANALYZE, VACUUM, pg_prewarm and other streaming reads.

Larger values help on storage with high per-request overhead (network volumes with IOPS limits count each request) and on throughput-bound scans; 256 kB–1 MB is worth testing. In pg_stat_io (PostgreSQL 18) read_bytes / reads shows the average I/O size actually achieved.

How to change it

Any user can change it for their session with SET.

See it in context

Asynchronous I/O Scan methods I/O workers

Related parameters

io_max_combine_limit effective_io_concurrency io_method

All Resource Usage parameters