
Cette version 18 de PostgreSQL promet de nombreuses améliorations de performances avec notamment le sous-système d’entrées/sorties asynchrones pour les lectures, la conservation des statistiques lors d’une mise à jour de version
majeure, l’ajout du support de l’authentification OAuth 2.0
et la dépréciation de md5
, l’ajout de nombreuses statistiques par défaut lors d’un EXPLAIN ANALYZE
et d’autres fonctionnalités encore autour de la réplication logique.
Vous pouvez retrouver la documentation pour la version 18 et les notes de publications.
PostgreSQL 18 Bêta 1 publiée
Le PostgreSQL Global Development Group annonce la disponibilité de la première bêta de PostgreSQL 18 en téléchargement. Cette publication contient un aperçu des fonctionnalités qui seront disponibles dans la version finale de PostgreSQL 18. Des modifications peuvent toutefois intervenir d’ici là.
Vous pouvez trouver des informations sur toutes les fonctionnalités et les changements de PostgreSQL 18 dans les notes de version
Dans l’esprit de la communauté open source PostgreSQL, nous vous encourageons fortement à tester les nouvelles fonctionnalités de PostgreSQL dans vos systèmes de base de données. Ceci afin de nous aider à éliminer les bogues et autres problèmes qui pourraient exister. Bien que nous ne vous conseillons pas de faire fonctionner PostgreSQL 18 Bêta 1 dans vos environnements de production, nous vous encourageons à trouver des moyens de faire fonctionner votre charge applicative typique avec cette publication bêta.
Vos tests et vos commentaires aideront la communauté à s’assurer que PostgreSQL 18 respecte nos standards de stabilité et fiablité. Vous pouvez également vous renseigner sur notre processus de beta testing et comment y contribuer.
Principales fonctionnalités de PostgreSQL 18
Vous trouverez ci-dessous les principales fonctionnalités planifiées pour PostgreSQL 18. Cette liste n’est pas exhaustive : pour la liste complète des fonctionnalités, se référer à la note de publication.
Optimisation des performances
PostgreSQL 18 introduit un sous-système d’entrées/sorties asynchrones (AIO). Ce nouveau sous-système permet d’augmenter le débit des E/S et de masquer leur latence. Sous Linux, io_uring
peut être utilisé pour les AIO, une implantation basée sur un worker est disponible pour toutes les plateformes. Cette version initiale prend en charge les lectures du système de fichiers telles que les lectures séquentielles, les bitmap heap scan et les vacuum, avec des tests montrant une amélioration des performances de 2 à 3 fois plus rapides.
Ces gains de performance s’étendent aux optimisations des requêtes et aux nouvelles fonctionnalités d’indexation. PostgreSQL 18 ajoute le support de l’utilisation des recherches skip scan
sur les index multicolonnes B-tree, ce qui peut résulter en des temps d’exécution plus rapides pour les requêtes qui omettent une condition =
sur un ou plusieurs préfixe de colonnes de l’index. Cette version inclut également des optimisations pour les clauses WHERE
qui contiennent des instructions OR
et IN
afin de mieux utiliser les récentes améliorations d’indexation, ce qui peut également améliorer les performances des requêtes. Il y a aussi de nombreuses améliorations de performance dans la façon dont PostgreSQL planifie et exécute les jointures de tables, depuis l’amélioration de la performance globale des jointures de type hash jusqu’à la possibilité pour les jointures de type merge d’utiliser des tris incrémentaux.
Il existe une variété d’autres fonctionnalités de PostgreSQL 18 qui améliorent les performances pour d’autres opérations de requête et de maintenance. PostgreSQL 18 supporte maintenant les créations parallèles pour les index GIN, qui sont couramment utilisés pour la recherche sur les données JSON et plein texte. Cette version permet également de définir des clés de partition et des vues matérialisées avec des index uniques qui ne sont pas de type B-tree. PostgreSQL 18 améliore également les performances globales de verrouillage pour les requêtes qui accèdent à de nombreuses relations, et ajoute plusieurs améliorations aux requêtes sur les tables partitionnées, y compris un meilleur support du pruning et des jointures. PostgreSQL 18 a également amélioré les performances du traitement de texte, y compris l’accélération des fonctions upper
/lower
et une nouvelle collation intégrée PG_UNICODE_FAST
.
Expérience des mises à jours de versions majeures
Avant PostgreSQL 18, une étape importante après avoir effectué une mise à jour majeure était d’exécuter la commande ANALYZE
pour générer des statistiques, ce qui est un composant critique pour aider PostgreSQL à sélectionner le plan de requête le plus efficace. En fonction de la taille et de l’activité globale d’un cluster PostgreSQL, ce processus pouvait prendre beaucoup de temps et avoir un impact potentiel sur les performances des requêtes jusqu’à ce que le processus soit terminé. PostgreSQL 18 introduit la possibilité de conserver les statistiques du planificateur lors d’une mise à jour majeure, ce qui permet à un cluster mis à jour d’atteindre ses performances attendues plus rapidement une fois qu’il est disponible.
De plus, pg_upgrade
, l’utilitaire utilisé pour faciliter la mise à jour d’une version majeure, a ajouté plusieurs améliorations de performance pour aider à accélérer les mises à jour avec de nombreux objets, tels que les tables et les séquences. Cette version permet également à pg_upgrade
de faire ses vérifications en parallèle en fonction des paramètres de l’option --jobs
, et ajoute également l’option --swap
, qui échange les répertoires de mise à niveau au lieu de copier, cloner ou lier des fichiers.
Expérience développeur
PostgreSQL 18 introduit les colonnes virtuelles générées qui calculent les valeurs des colonnes pendant l’exécution de la requête, au lieu de les stocker. C’est maintenant l’option par défaut pour les colonnes générées. De plus, les colonnes générées stockées peuvent maintenant être répliquées logiquement.
Cette version ajoute la possibilité d’accéder à la fois aux valeurs précédentes (OLD
) et actuelles (NEW
) dans la clause RETURNING
pour les commandes INSERT
, UPDATE
, DELETE
et MERGE
. De plus, PostgreSQL 18 ajoute le support de la génération d'UUIDv7
à travers la fonction uuidv7()
, permettant la génération des UUIDs aléatoires qui sont ordonnés en fonction de l’horodatage pour supporter de meilleures stratégies de cache (cette version ajoute également uuidv4()
comme alias pour gen_rand_uuuid
).
Maintenant, avec PostgreSQL 18, vous pouvez faire des comparaisons LIKE
sur du texte qui utilise une collation non déterministe, ce qui rend plus simple la recherche de motifs complexes. De plus, cette version introduit CASEFOLD
pour faciliter les correspondances insensibles à la casse.
Cette version ajoute également des contraintes temporelles, ou des contraintes sur des plages, pour les contraintes PRIMARY KEY
et UNIQUE
à l’aide de la clause WITHOUT OVERLAPS
, et pour les contraintes FOREIGN KEY
à l’aide de la clause PERIOD
.
Sécurité
PostgreSQL 18 introduit l’authentification oauth
, qui permet aux utilisateurs de s’authentifier en utilisant les mécanismes OAuth 2.0
supportés par l’utilisation d’extensions PostgreSQL. De plus, PostgreSQL 18 ajoute plusieurs fonctionnalités pour valider et renforcer le comportement du mode FIPS
, et ajoute également ssl_tls13_ciphers
pour permettre aux utilisateurs de configurer les suites de chiffrement TLS v1.3
que le serveur peut utiliser.
Cette version déprécie l’authentification par mot de passe md5
en faveur de l’utilisation de l’authentification SCRAM
qui a été ajoutée pour la première fois dans PostgreSQL 10. L’authentification md5
sera complètement supprimée dans une prochaine version majeure. De plus, PostgreSQL 18 ajoute le support de l’authentification SCRAM passthrough
avec postgres_fdw
et dblink
lors de l’authentification d’instances PostgreSQL distantes.
Supervision
PostgreSQL 18 ajoute plus de détails à l’utilitaire EXPLAIN
, qui fournit des informations sur l’exécution du plan de requête, et depuis cette version montre automatiquement combien de buffers (l’unité fondamentale de stockage des données, par défaut 8KB) sont accédés lors de l’exécution d'EXPLAIN ANALYZE
. En outre, EXPLAIN ANALYZE
indique désormais le nombre de lectures d’index au cours d’un scan d’index, et EXPLAIN ANALYZE VERBOSE
inclut des statistiques sur l’utilisation CPU, les WAL et la lecture moyenne. Cette version inclut également des informations sur le temps total passé en vacuum et analyse de table dans pg_stat_all_tables
, et montre maintenant des statistiques par connexion sur l’utilisation des E/S et des WAL.
PostgreSQL 18 fournit également plus d’informations sur les conflits d’écriture qui se produisent durant la réplication logique, et affiche ces informations à la fois dans les journaux et dans la vue pg_stat_subscription_stats
.
Autres fonctionnalités
Depuis PostgreSQL 18, les sommes de contrôle des données, qui sont utilisées pour valider l’intégrité des données stockées, sont maintenant activées par défaut sur les nouveaux clusters PostgreSQL. Vous pouvez choisir de désactiver ce comportement en utilisant la commande initdb --no-data-checksums
. Notez que cela peut nécessiter des changements dans vos scripts de mise à jour.
De plus, de nouveaux comportements sont disponibles dans plusieurs fonctionnalités de contraintes. Tout d’abord, les contraintes de clé étrangère et de vérification peuvent être définies comme NOT ENFORCED
et, inversement, rendues exécutoires. De plus, les contraintes NOT NULL
préservent maintenant leurs noms comme l’exige le standard SQL, supportent les clauses NOT VALID
et NO INHERIT
, et se comportent maintenant de manière plus cohérente avec l’héritage.
pg_createsubscriber
supporte maintenant le drapeau --all
pour que vous puissiez créer des réplicas logiques pour toutes les bases de données d’une instance avec une seule commande. De plus, PostgreSQL 18 vous permet de créer la définition du schéma d’une table étrangère en utilisant la définition d’une table locale en utilisant la commande CREATE FOREIGN TABLE ... LIKE
.
PostgreSQL 18 introduit également une nouvelle version (3.2) du protocole de communication, qui est la première nouvelle version du protocole depuis PostgreSQL 7.4 (2003). libpq
utilise toujours la version 3.0 par défaut en attendant que les clients (par exemple, les pilotes, les poolers, les proxies) ajoutent le support de la nouvelle version du protocole.
Fonctionnalités supplémentaires
De nombreuses autres fonctionnalités et améliorations ont été ajoutées à PostgreSQL. En fonction des cas d’usages, leur importance peut paraître plus ou moins grande que celles mentionnées ci-dessus.
Vous pouvez consulter les notes de publications pour une liste complète des nouveautés et changements : https://www.postgresql.org/docs/18/release-18.html
Tests pour le débogage et la compatibilité
La stabilité de chaque publication de PostgreSQL dépend de vous, la communauté. En testant la version à venir avec votre charge et vos outils de tests, vous pourrez nous aider à trouver les bogues et régressions avant la publication de PostgreSQL 18.
Étant donné qu’il s’agit d’une version bêta, des changements mineurs dans le comportement de la base de données, des détails et des APIs sont toujours possibles. Vos retours et tests aideront à déterminer les ajustements finaux des nouvelles fonctionnalités.
La qualité des tests aide à déterminer le moment de la publication finale.
Une liste des problèmes ouverts est publiquement disponible dans le wiki de PostgreSQL. Vous pouvez rapporter des bogues en utilisant le formulaire présent sur le site web de PostgreSQL : https://www.postgresql.org/account/submitbug/.
Planning Bêta
Il s’agit de la première publication bêta de la version 18. Le projet PostgreSQL publiera autant de bêtas que cela est nécessaire pour tester. Celles-ci seront suivies par une ou plusieurs publications de versions candidates, jusqu’à la publication de la version finale vers septembre/octobre 2025.
Pour plus d’information, veuillez consulter la page Beta Testing.
Liens
- Téléchargement
- Information sur le Bêta Testing
- Note de publication de PostgreSQL 18 Bêta
- Problèmes connus de PostgreSQL 18
- Soumettre un bogue
- Faire un don
Crédits photo : Carlos Gonzalez