Jacar mascot — reading along A laptop whose eyes follow your cursor while you read.
Arquitectura Tecnología

PostgreSQL 16: Changes That Affect Day-to-Day Work

PostgreSQL 16: Changes That Affect Day-to-Day Work

Actualizado: 2026-05-03

PostgreSQL 16 arrived in September 2023, keeping the community’s annual cadence. No single feature is revolutionary on its own, but the set reflects the project’s maturity: each release polishes areas where operators felt real friction. Below are the changes that actually affect day-to-day production work.

Key takeaways

  • Logical replication from standby offloads the primary in clusters with multiple CDC consumers.
  • pg_stat_io provides, for the first time, granular I/O visibility by operation type and context.
  • Parallel FULL OUTER JOIN removes a historical bottleneck in analytical queries.
  • New SQL/JSON and array functions reduce application code and are more portable across engines.
  • Migrating from 15 is straightforward; from 13, the November 2025 end-of-life makes acting urgent.

Logical Replication From Standby

The most-awaited feature for teams running large clusters. Until Postgres 15, logical replication (CDC, change data capture) could only originate from the primary — adding load to the most critical node.

Postgres 16 lets you use a standby as the source for logical subscriptions. Three practical implications:

  • ETL and CDC pipelines without adding load to the primary.
  • Cross-region replication from a local standby instead of crossing continents from the primary.
  • Fan-out topologies where one standby feeds several logical consumers (Kafka, Debezium).

For teams with an already-overloaded primary, this change significantly reduces pressure on the most critical node.

Performance Improvements in Parallel Queries

Postgres improves parallelism in every recent release. In version 16 three changes stand out:

  • Parallel FULL OUTER JOIN. Previously serial; now uses parallel workers. Dramatic improvement in analytical queries joining large tables.
  • JOIN with more complex filters now supports parallelism where it previously didn’t.
  • Better window function planning, especially in combination with aggregations.

For OLAP or complex report queries, the change is noticeable without touching any application code.

pg_stat_io: The New Window Into I/O

One of the most useful observability additions in this release. The pg_stat_io view breaks down Postgres I/O by operation type (read, write, extend, fsync) and context (normal, vacuum, bulk read/write).

sql
SELECT backend_type, object, context, reads, writes, hits
FROM pg_stat_io
ORDER BY reads DESC;

For the first time you can answer with data: who is consuming I/O — VACUUM, bulk loads, or normal queries? Does shared_buffers have enough hit ratio? Is there excessive extend activity? This is a fundamental improvement for performance diagnosis that previously required external tools or manual instrumentation. It complements Grafana Stack observability patterns to close the metrics loop.

PostgreSQL I/O flow diagram: relationship between shared buffers, WAL, and disk

New SQL Functions

Syntax improvements that reduce application code:

  • Standard SQL/JSON constructors (JSON_OBJECT, JSON_ARRAY, IS JSON). More portable across engines than older Postgres-specific functions.
  • array_sample() and array_shuffle(). Useful for sampling without constructing elaborate queries.
  • Better regex support in COLLATE patterns, enabling more expressive custom orderings.

Physical Replication and Administration Improvements

For operational clusters, several adjustments add up in daily use:

  • Parallel pg_basebackup. Faster initial backups on large clusters.
  • LZ4 and Zstandard compression integrated in pg_dump and pg_restore — previously required external pipes.
  • Improved pg_stat_replication statistics with more detail on lag and state per replica.
  • More granular pg_locks over previously opaque lock types.
  • VACUUM with more detailed progress feedback via pg_stat_progress_vacuum.

Each improvement is small on its own, but the combination reduces diagnosis time during incidents.

Less Visible But Important Changes

  • Experimental io_method parameter for testing io_uring on Linux. Promises significant I/O throughput improvements on modern kernels.
  • Improved CREATE TABLE LIKE with more inheritance options (constraints, indexes, statistics).
  • Large-transaction compression in logical replication — less bandwidth in active CDC streams.

When to Migrate

Three scenarios with clear criteria:

  • On Postgres 15: migration is relatively easy with no disruptive changes. Worth planning to benefit from pg_stat_io and standby logical replication.
  • On Postgres 14 or earlier: prioritise migrating to 15 or 16 per your operational calendar. Older versions approach end-of-life.
  • On Postgres 13: loses support November 2025. Start planning now.

For new projects, start directly on 16. There’s no reason to launch on an earlier version.

Checks Before Migrating

Four operational points for a clean migration:

  1. Extensions. Verify PostGIS, pgvector, TimescaleDB, and any other extension have a Postgres 16-compatible version.
  2. Client drivers. Older versions may have issues with SCRAM authentication enabled by default.
  3. Backups. Test pg_dump from version 16 toward the lower version before committing the change.
  4. Existing logical replication. Subscriber/publisher migration requires coordination with counterparts.

If you use vector databases such as pgvector on Postgres, verify extension compatibility before migrating.

Conclusion

PostgreSQL 16 doesn’t transform how you use the database; it improves specific points any production Postgres operator will appreciate. Logical replication from standby, pg_stat_io, and parallel FULL OUTER JOIN are the three features that justify planning migration from versions 14 or 15. For teams on 13 or earlier, the end-of-life timeline adds real urgency.

Was this useful?
[Total: 12 · Average: 4.3]

Written by

CEO - Jacar Systems

Passionate about technology, cloud infrastructure and artificial intelligence. Writes about DevOps, AI, platforms and software from Madrid.