Percona Distribution for PostgreSQL 17.0.1 (2024-10-03)¶
We are pleased to announce the launch of Percona Distribution for PostgreSQL 17.0.1 - a solution with the collection of tools from PostgreSQL community that are tested to work together and serve to assist you in deploying and managing PostgreSQL. The aim of Percona Distribution for PostgreSQL is to address the operational issues like High-Availability, Disaster Recovery, Security, Observability, Spatial data handling, Performance and Scalability and others that enterprises are facing.
This release of Percona Distribution for PostgreSQL is based on Percona Server for PostgreSQL 17.0.1 - a binary compatible, open source drop in replacement of PostgreSQL Community 17.0 .
Both Percona Server for PostgreSQL and PostgreSQL Community function identically enabling you to migrate from one to another.
Percona Server for PostgreSQL 17.0.1 has the extra digit in version which represents Percona version number.
To check what software you’re running, run the following SQL query:
SELECT version();
Sample output
version
----------------------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 17.0 - Percona Server for PostgreSQL 17.0.1
Alternatively, you can pass the --version
flag when you establish the psql
session:
$ psql --version
Sample output
psql (PostgreSQL) 17.0 - Percona Server for PostgreSQL 17.0.1
Release Highlights¶
Percona Server for PostgreSQL improvements¶
- Exposed Storage Manager API to enable PostgreSQL extensions to hook in custom storage managers.
- Extended Write-Ahead Log (WAL) API to hook into WAL read and write functions.
PostgreSQL Community improvements¶
PostgreSQL Community 17 features a lot of new functionalities and enhancements to performance, replication, monitoring, developer experience and more. Among them are the following:
Incremental base backups¶
Save time and storage space with the ability to back up only the changes since the last backup using pg_basebackup
with the --incremental
option. The new pg_combinebackup
tool allows manipulation of base and incremental file system backups for recovery.
Note that you still require a full backup to derive the increments from and to be used during recovery.
This feature is especially beneficial for organizations with large data sets where a full backup is a time-consuming and resource-intensive operation.
Performance improvements¶
- Vacuum Process Enhancements: The VACUUM process, responsible for reclaiming storage, now has a new internal data structure, reducing memory usage by up to 20x and improving overall performance.
- The new stream I/O interface can enhance performance during sequential scans and when running the
ANALYZE
command. - Added support for parallel index builds for
BRIN
indexes, which can significantly speed up index creation. Additionally, this release significantly improves execution time of queries that use theIN
clause with a B-tree index.
Developer experience¶
- Developers can now transform JSON objects into a standard database table and convert JSON values to different data types directly within SQL statements. This adds flexibility when working with multiple data formats.
- Run bulk upload and export data from PostgreSQL up to 2x faster with improved
COPY
performance. In addition, use theON_ERROR
option to proceed with the copy operation even if there is an error inserting a row. - The RETURNING clause added to the MERGE command enables developers to retrieve and return the rows modified by the MERGE operation in a single step, reducing the need for additional queries and simplifying complex workflows.
Replication improvements¶
- Gain more control for managing PostgreSQL databases in high availability environments with the ability to continue logical replication from a new primary node after the failover.
- Track inactive and invalid replication slots in the
pg_replication_slots
view. With theinactive_since
andinvalidation_reason
columns added to this view, you can get insights when a slot became inactive as well as the reason for an invalid slot. - Convert a physical replica into a logical one using the new
pg_createsubscriber
command-line tool
Security improvements¶
- Enable users to perform maintenance operations such as ANALYZE, VACUUM, REINDEX, CLUSTER, REFRESH MATERIALIZED VIEW, and LOCK TABLE on all relations by assigning the new predefined
pg_maintain
role to them. In addition, thesearch_path
is safe for maintenance operations like VACUUM, ANALYZE, CLUSTER, REFRESH MATERIALIZED VIEW and INDEX.
Monitoring improvements¶
-
Get deeper insights about query plans and execution with the new options for the EXPLAIN command:
-
SERIALIZE shows the amount of time it takes to convert data for network transmission
-
MEMORY reports optimizer memory usage
-
Learn about why an active session is waiting using the
pg_stat_activity
and newpg_wait_events
views
See also
Join Percona Squad¶
Participate in monthly SWAG raffles, get an early access to new product features and invite-only “ask me anything” sessions with database performance experts. Interested? Fill in the form
Known Limitations¶
Percona Monitoring and Management (PMM) 2.43.1 is not compatible with pg_stat_monitor
2.1.0 to monitor PostgreSQL 17. However, PMM is compatible with pg_stat_monitor
2.1.0 for monitoring of PostgreSQL 16 and previous versions.
The support for PostgreSQL 17 will be available in the future PMM release.
The following is the list of extensions available in Percona Distribution for PostgreSQL.
Extension | Version | Description |
---|---|---|
etcd | 3.5.16 | A distributed, reliable key-value store for setting up high available Patroni clusters |
HAProxy | 2.8.11 | a high-availability and load-balancing solution |
Patroni | 4.0.2 | a HA (High Availability) solution for PostgreSQL |
PgAudit | 17.0 | provides detailed session or object audit logging via the standard logging facility provided by PostgreSQL |
pgAudit set_user | 4.1.0 | provides an additional layer of logging and control when unprivileged users must escalate themselves to superusers or object owner roles in order to perform needed maintenance tasks. |
pgBackRest | 2.53.1 | a backup and restore solution for PostgreSQL |
pgBadger | 12.4 | a fast PostgreSQL Log Analyzer. |
PgBouncer | 1.23.1 | a lightweight connection pooler for PostgreSQL |
pg_gather | v27 | an SQL script for running the diagnostics of the health of PostgreSQL cluster |
pgpool2 | 4.5.4 | a middleware between PostgreSQL server and client for high availability, connection pooling and load balancing. |
pg_repack | 1.5.1 | rebuilds PostgreSQL database objects |
pg_stat_monitor | 2.1.0 | collects and aggregates statistics for PostgreSQL and provides histogram information. |
PostGIS | 3.3.7 | a spatial extension for PostgreSQL. |
PostgreSQL Common | 264 | PostgreSQL database-cluster manager. It provides a structure under which multiple versions of PostgreSQL may be installed and/or multiple clusters maintained at one time. |
wal2json | 2.6 | a PostgreSQL logical decoding JSON output plugin |
Percona Distribution for PostgreSQL on Red Hat Enterprise Linux 8 and compatible derivatives also includes the following packages:
llvm
17.0.6 packages. This fixes compatibility issues with LLVM from upstream.- supplemental
python3-etcd
packages, which can be used for setting up Patroni clusters.
Percona Distribution for PostgreSQL is also shipped with the libpq library. It contains “a set of library functions that allow client programs to pass queries to the PostgreSQL backend server and to receive the results of these queries.”