PostgreSQL 18: async I/O, uuidv7, and an upgrade path that hurts less

PostgreSQL 18 shipped in September 2025 with a new asynchronous I/O subsystem (up to 3x on reads), uuidv7() in core, virtual generated columns and OAuth 2.0 authentication. Here is what actually matters.

PostgreSQL 18 was released on September 25, 2025. The headline trio is asynchronous I/O, a smoother upgrade experience, and developer features. In day-to-day operations that means: faster reads, less painful major upgrades, and a few things that used to require extensions now in core.

Three reasons to upgrade

One: the async I/O subsystem. Historically a PostgreSQL backend issued a read and waited. 18 adds a pluggable AIO layer (io_method can be worker or io_uring), with the project measuring up to 3x improvements when reading from storage. Mind the “up to”: sequential scans and read-ahead-heavy workloads benefit most, while in-memory or tiny-transaction OLTP gains are modest.

Two: uuidv7() in core. A v7 UUID puts the timestamp in the high bits, which gives much better index locality. Previously you needed an extension or application-side generation; now SELECT uuidv7(); works. For tables that use UUID primary keys and suffer on insert performance, this is the cheapest fix available.

Three: upgrades hurt less. pg_upgrade now preserves optimizer statistics, so you do not need a full ANALYZE round to get back to the old plans. Parallel checks and incremental backup also improved.

Also worth knowing

  • Virtual generated columns: computed at query time, no storage cost — handy for indexing a field pulled out of JSON;
  • OAuth 2.0 authentication: connect directly to an identity provider instead of putting a proxy in front;
  • Skip scan: multi-column B-tree indexes become usable even when the leading column has low cardinality;
  • EXPLAIN improvements: more information, less guessing.

The upgrade path

  1. Run pg_upgrade --check against a replica or shadow cluster first, and pay attention to extension compatibility (pgvector, PostGIS and friends);
  2. Leave io_method at its default, benchmark, then decide whether io_uring is worth it;
  3. Check connection poolers and driver versions. The protocol did not change much, but driver support for OAuth and the newer auth methods varies;
  4. After the major upgrade, re-check the plans of your critical queries to make sure nothing regressed through statistics or planner changes.

The judgement

PostgreSQL 18 is not a feature-explosion release. It fixes the foundations: modern I/O, smoother upgrades, better UUIDs. If your database already shows read I/O pressure, this may be the most worthwhile major upgrade in years.

Cover image: PostgreSQL press kit (postgresql.org).

← Back to all posts

Comments

…