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.

bannière PostgreSQL

La version 17 et quelques-unes de ses nouveautés

benoit 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.


DALIBO

DALIBO est le spécialiste français de PostgreSQL®. Nous proposons du support, de la formation et du conseil depuis 2005.