Nantes, le 11 octobre 2024
Le 26 septembre dernier, le projet PostgreSQL a annoncé la disponibilité de leur dernière version à ce jour, la version 17.0. Cet article présente un extrait des nouveautés de cette version.
La version 17 et quelques-unes de ses nouveautés
Encore plus que d’habitude, cette nouvelle version de PostgreSQL contient son
lot d’améliorations sur les performances. Un travail de fond a été engagé
pour améliorer les opérations d’entrées sorties vers le stockage. Le travail
est encore loin d’être fini, mais la v17 profite néanmoins des premiers fruits de
ce travail avec des optimisations concernant la génération de WAL, les
lectures séquentielles et l’exécution des commandes ANALYZE
.
Le VACUUM
a de nouveau fait l’objet d’améliorations, ce n’est pas surprenant
car c’est un domaine auquel le projet porte une attention particulière. Cette
fois-ci, c’est sa consommation mémoire qui a été optimisée, ce qui
devrait le rendre plus rapide et limiter l’impact de son passage sur le système.
D’autres optimisations ont été faites côté planification, gestion des contraintes
NOT NULL
, délégation de l’exécution de portions de requêtes sur les serveurs
distants dans postgres_fdw
, exécution des CTE ainsi que des requêtes contenant des
clauses IN
pour lesquelles utiliser un index est possible.
Parmi les fonctionnalités destinées aux développeurs, les améliorations
touchent notamment JSON, pour lequel de nombreuses fonctions ont été ajoutées. Le
chargement en masse et la transformation de données via les commandes MERGE
et COPY
ont également évolué en matière de fonctionnalités et performances.
Pour finir, le travail de fond sur le partitionnement continue, avec l’ajout du
support natif des contraintes d’exclusions et des colonnes d’identité.
PostgreSQL inclut désormais un nouveau fournisseur de collation immutable :
builtin
. La locale C.UTF-8
, qu’il supporte, permet de garantir un
comportement stable pour une version donnée de PostgreSQL, et est plus
performante pour les tris et conversions (comme LOWER
/UPPER
/INITCAP
).
Cette locale ne permet pas de réaliser des tris en langage naturel, mais
remplace avantageusement les locales C.UTF-8
et C
de la libc.
La réplication logique se voit elle aussi améliorée dans cette version, avec la
gestion du failover, et la possibilité de créer un réplica logique en utilisant
la réplication physique. Cette opération est possible grâce au nouvel outil
pg_createsubscriber
. pg_upgrade
permet maintenant de migrer les slots de
réplications et souscriptions lors des mises à jour majeures. C’est un gros
atout qui permet de s’affranchir d’une reconstruction parfois coûteuse des
réplicas logiques.
Les outils de sauvegarde ne sont pas en reste. pg_basebackup
permet désormais
de réaliser des sauvegardes incrémentales qui peuvent être recombinées avec le
nouvel outil pg_combinebackup
. pg_dump
peut filtrer de manière plus flexible les objets à
exporter avec la nouvelle option --filter
.
La version 17 et Dalibo
Nous travaillons actuellement sur le workshop que nous souhaitons proposer pour cette version 17. Il reste encore du travail, les nouvelles fonctionnalités étant nombreuses et notre temps limité, mais nous devrions bientôt pouvoir proposer des dates.
Pour nos modules de formation, le travail est aussi en cours. Avec un peu de chance et beaucoup de travail, la mise à jour sera prête pour Noël.
Nos différents outils sont actuellement testés avec la version 17 et mis à jour le cas échéant.