Postgres 18's async I/O subsystem hits 3x on sequential scans
TX_022Engineering

Postgres 18's async I/O subsystem hits 3x on sequential scans

Postgres 18 introduced an asynchronous I/O subsystem that issues parallel I/O requests instead of waiting on each one. Benchmarks show up to 3x gains on seq scans, bitmap heap scans, and vacuum.

Postgres 18 shipped late 2025 and continues active patch releases through 2026. The headline feature is the new asynchronous I/O subsystem [Postgres 18 release notes].

── What shipped ──

The AIO subsystem lets Postgres issue multiple I/O requests concurrently rather than blocking on each one in sequence. Supported operations include:

  • Sequential scans
  • Bitmap heap scans
  • Vacuum

Benchmarks across these workloads show up to 3x gains in certain scenarios.

Other notable additions in 18 [press kit]:

  • Skip-scan lookups on multicolumn B-tree indexes for queries that omit = on prefix columns
  • OR-condition index optimisation in WHERE clauses
  • uuidv7() for timestamp-ordered UUIDs
  • Virtual generated columns computed on read (now the default for generated columns)
  • OAuth 2.0 authentication support
  • OLD/NEW in RETURNING clauses for INSERT, UPDATE, DELETE, MERGE
  • Temporal constraints for PRIMARY KEY, UNIQUE, FOREIGN KEY
  • Statistics preserved across major-version upgrades — no more cold-start performance dip after pg_upgrade

── Why it matters ──

The AIO change is the most consequential. Postgres has been catching up on parallelism for a decade — parallel queries shipped in 9.6, parallel index builds in 11, parallel vacuum in 13. AIO closes the gap on storage-bound workloads, where Postgres has historically lagged behind systems with native async I/O.

The 3x figure is the headline; real-world gains depend on storage characteristics. Cloud-managed Postgres (RDS, Cloud SQL, Neon, Supabase) instances on NVMe-class storage will see the largest improvements. Older spinning-disk deployments will see less.

The statistics-preservation change is the underrated one. Major-version upgrades historically required ANALYZE afterwards to rebuild planner statistics, producing a known performance dip. 18 keeps statistics across the upgrade, removing that operational gotcha.

── Editor's take ──

Postgres 18 is the kind of release that makes platform engineers' lives quieter. AIO is the headline win, but the upgrade-statistics fix removes a real operational headache. If you're on 16 or 17, the 18 upgrade path is straightforward — schedule it.

adjacent broadcasts
operator_channel
[ comments_offline · provider_not_configured ]
transmission_log

// newsletter_offline · provider_not_configured