- PostgreSQL 17 inclut d’importantes améliorations de performances, une meilleure gestion de la mémoire, des optimisations de l’accès au stockage, des améliorations pour les charges de travail à forte concurrence, des vitesses accrues pour le chargement massif et l’export, ainsi qu’une meilleure exécution des requêtes sur index
Améliorations des performances à l’échelle du système
- Amélioration de la structure mémoire interne du processus
vacuum de PostgreSQL, essentiel au fonctionnement normal, réduisant l’utilisation mémoire jusqu’à 20 fois
- Accélération de
vacuum et réduction de l’usage des ressources partagées, libérant davantage de ressources pour les charges de travail
- Amélioration continue des performances de la couche d’E/S
- L’amélioration du traitement du Write-Ahead Log (WAL) permet jusqu’à 2 fois plus de débit en écriture sur des charges de travail à forte concurrence
- Une nouvelle interface de streaming I/O accélère les scans séquentiels (lecture de toutes les données d’une table) et la mise à jour des statistiques de plan d’exécution de la commande
ANALYZE
- Extension des gains de performance à l’exécution des requêtes
- Amélioration des performances des requêtes contenant des clauses
IN utilisant des index B-tree (la méthode d’indexation par défaut de PostgreSQL)
- Prise en charge de la construction parallèle des index BRIN
- Plusieurs améliorations de la planification des requêtes
- Optimisation des contraintes
NOT NULL
- Amélioration du traitement des expressions de table communes (requêtes
WITH)
- Extension de la prise en charge SIMD (Single Instruction/Multiple Data) pour accélérer les calculs, notamment avec l’utilisation d’AVX-512 pour la fonction
bit_count
Une expérience développeur encore renforcée
- PostgreSQL a été la première base de données relationnelle à ajouter la prise en charge de JSON (2012)
- PostgreSQL 17 étend encore l’implémentation de la norme SQL/JSON
JSON_TABLE permet de convertir des données JSON en tables PostgreSQL standard
- Prise en charge des constructeurs SQL/JSON (
JSON, JSON_SCALAR, JSON_SERIALIZE) et des fonctions de requête (JSON_EXISTS, JSON_QUERY, JSON_VALUE)
- Ajout d’expressions
jsonpath axées sur la conversion des données JSON vers les types de données natifs de PostgreSQL (nombres, booléens, chaînes, date/heure)
- Ajout de la clause
RETURNING et de la mise à jour des vues à la commande MERGE
- Amélioration du chargement massif et de l’export de données
- Jusqu’à 2 fois plus de performances lors de l’export de grandes lignes avec la commande
COPY
- Amélioration des performances de
COPY lorsque l’encodage source et destination est identique
- Ajout de l’option
ON_ERROR, qui permet de poursuivre l’import même en cas d’erreurs d’insertion
- Extension des capacités de gestion des données réparties entre partitions et instances PostgreSQL distantes
- Prise en charge des colonnes d’ID et des contraintes d’exclusion sur les tables partitionnées
- Avec
postgres_fdw, les sous-requêtes EXISTS et IN peuvent être poussées vers des serveurs distants
- Inclusion d’un fournisseur de collation intégré, indépendant de la plateforme et immuable
- Il fournit une sémantique de tri similaire à la collation C, mais utilise l’encodage UTF-8 au lieu de
SQL_ASCII
- Avec ce nouveau fournisseur de collation, les requêtes basées sur du texte renvoient les mêmes résultats de tri quel que soit l’endroit où PostgreSQL est exécuté
Améliorations de la réplication logique pour la haute disponibilité et les mises à niveau majeures
- La réplication logique est utilisée pour diffuser les données en temps réel
- Dans les versions précédentes, il fallait supprimer les slots de réplication logique lors d’une mise à niveau majeure, ce qui imposait une resynchronisation des données vers les abonnés après l’upgrade
- À partir de PostgreSQL 17, il n’est plus nécessaire de supprimer les slots de réplication logique, ce qui simplifie le processus de mise à niveau
- Intègre des mécanismes de contrôle du basculement pour la réplication logique, permettant des déploiements plus résilients dans les environnements haute disponibilité
- Introduction de l’outil en ligne de commande
pg_createsubscriber, qui permet de convertir une réplique physique en nouvelle réplique logique
Davantage d’options pour la sécurité et l’administration opérationnelle
- PostgreSQL 17 étend encore les possibilités offertes aux utilisateurs pour gérer l’ensemble du cycle de vie du système de base de données
- Ajout d’une nouvelle option TLS,
sslnegotiation, qui permet d’effectuer directement le handshake TLS lors de l’utilisation d’ALPN
- Ajout du rôle prédéfini
pg_maintain, qui accorde des autorisations pour effectuer des opérations de maintenance
pg_basebackup, l’utilitaire de sauvegarde inclus dans PostgreSQL, prend désormais en charge les sauvegardes incrémentales, et l’utilitaire pg_combinebackup a été ajouté pour reconstituer une sauvegarde complète
pg_dump inclut une nouvelle option --filter, qui permet de sélectionner les objets à inclure lors de la création d’un fichier de dump
- Amélioration des capacités de monitoring et d’analyse
EXPLAIN affiche désormais le temps consacré à la lecture et à l’écriture des blocs d’E/S locaux
- Deux nouvelles options,
SERIALIZE et MEMORY, sont incluses : elles sont utiles pour vérifier le temps consacré à la transformation des données pour la transmission réseau et la quantité de mémoire utilisée
- Affichage de la progression du nettoyage des index
- Ajout de la vue système
pg_wait_events, qui, combinée à pg_stat_activity, fournit des informations sur les raisons pour lesquelles une session active est en attente
1 commentaires
Avis Hacker News
Félicitations pour la nouvelle sortie de PostgreSQL 17, avec la mention de plusieurs améliorations
pg_basebackupet ajout de l’utilitairepg_combinebackupAvis sur l’utilité des fonctionnalités JSON
Partage d’une expérience d’usage de la fonctionnalité JSON_TABLE
Mention des améliorations de performances et d’UX de PostgreSQL 17
Impression sur le changelog
Partage d’une expérience de migration d’Oracle vers MSSQL à cause de problèmes de confiance envers les logiciels open source
Remerciements pour l’amélioration continue de Postgres et espoir d’une prise en charge officielle de l’extension Incremental View Maintenance (IVM)
Attentes concernant la prise en charge des mises à niveau majeures de PostgreSQL
Souhait de voir des tables à version système introduites dans Postgres
Attente que l’amélioration de l’intégration JSON de Postgres permette un nouveau paradigme de framework web