What's new in PostgreSQL 17?
PostgreSQL 17 features many feature improvements, optimizations, additions to the developer experience with JSON TABLE
, and enhancement to logical replications to simplify management of workloads and version upgrades.
1. Performance gains
-
PostgreSQL 17 improves performances for
NOT NULL
constraints,WITH
queries, and queries withIN
clauses. -
2x performance improvements when exporting large rows using
COPY
-
MERGE feature updates. PostgreSQL 17 adds more features to
MERGE
, including aRETURNING
clause and the ability to update views. -
High concurrency workloads performance increase thanks to improvements with write-ahead log processing.
-
New memory structure for vacuum that consumes up to 20x less memory.
2. New features
-
Two new commands:
MERGE PARTITIONS
andSPLIT PARTITIONS
have been added, which allows merging and splitting of partitions respectively. -
JSON TABLE
. Developers can now convert JSON data into a PostgreSQL table. PostgreSQL 17 also supports SQL/JSON constructorsJSON, JSON_SCALAR, JSON_SERIALIZE
and query functionsJSON_EXISTS, JSON_QUERY, JSON_VALUE
, supporting many ways to convert JSON data into a native PostgreSQL data type. -
pg_createsubscriber
, a new tool that allows users to create a logical replica from a physical replica, such as a physical standby server. -
A new TLS option,
sslnegotiation
lets users perform direct TLS handshakes when usingALPN
. -
pg_basebackup
now supports incremental backups and adds a new utility,pg_combinebackup
to reconstruct a full backup. -
pg_dump
has a new option,--filter
that allows selecting what objects to include when generating a dump file. -
EXPLAIN
now shows time spent for local I/O block and writes, and includes two new options:SERIALIZE
andMEMORY
. -
A new view,
pg_wait_events
, when combined withpg_stat_activity
, allow a user to see why an active session is waiting. -
PostgreSQL 17 now supports using identity columns and exclusion constraints on partitioned tables.