PostgreSQL 16 Released: Logical Replication from Standbys and Faster Queries
PostgreSQL 16 improved query parallelism and bulk loading, added logical replication from standby servers, and introduced the pg_stat_io monitoring view.
Historical Archive. This article documents an event from 2023 and is preserved with its original date for reference. It is not current news, and details may have changed since publication.
What happened
PostgreSQL 16 was released on September 14, 2023, per the PostgreSQL Global Development Group's official announcement. The release focused on performance, particularly query parallelism, bulk loading and logical replication, along with new monitoring and access-control features.
Query and bulk-load performance
PostgreSQL 16 added new query-planner optimisations: the planner can now parallelise FULL and RIGHT joins, generate better plans for aggregates using DISTINCT or ORDER BY, use incremental sorts for SELECT DISTINCT, and execute window functions more efficiently. Bulk loading with COPY improved in both single and concurrent operations, with tests showing up to a 300% improvement in some cases. The release also introduced SIMD acceleration on x86 and ARM for processing ASCII and JSON strings.
Logical replication from standbys
A significant new capability is logical replication from a standby instance, meaning a standby can publish logical changes to other servers, giving teams new options for distributing workloads away from a busy primary. Subscribers can apply large transactions using parallel workers, use B-tree indexes instead of sequential scans on tables without a primary key, and the release began adding support for bidirectional logical replication.
Developer experience and monitoring
PostgreSQL 16 added more SQL/JSON syntax such as JSON_ARRAY() and IS JSON, allowed underscores as thousands separators and non-decimal integer literals, and built with ICU support by default for text collations. For observability it introduced pg_stat_io, a new source of granular I/O metrics, and recorded when a table or index was last scanned.
Why it mattered
PostgreSQL 16's performance work, especially parallelised joins and much faster COPY bulk loads, benefited data-heavy workloads directly, while logical replication from standbys opened new architectures for scaling reads and distributing changes. The pg_stat_io view gave administrators clearer insight into one of the hardest things to tune: I/O behaviour.
Related on Skillo
See also: PostgreSQL 15 and the MERGE command, PostgreSQL 17's JSON_TABLE and leaner vacuum.
Sources
Published date reflects the original event date (2023-09-14). This article is original Skillo editorial written from the sources above; facts were verified in September 2026.
Written by
Skillo Staff
0 Comments
Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.