25 septembre 2025. Le PostgreSQL Global Development Group annonce aujourd'hui la publication de PostgreSQL 18, dernière version de la base de données open source de référence.
PostgreSQL 18 améliore la performance des charges de travail de toute taille grâce à un tout nouveau sous-système d'entrées-sorties. Ce système a démontré des performances en lecture pouvant être jusqu'à trois fois plus rapide. Cette version permet d'augmenter le nombre de requêtes pouvant utiliser des index. Elle rend également les mises à jour de versions majeures moins disruptives, accélérant les temps de mise à jour et réduisant le temps d'atteinte de la performance optimale une fois la mise à jour effectuée.
Les développeurs bénéficient également de nouvelles fonctionnalités avec PostgreSQL 18. Celles-ci incluent les colonnes générées virtuelles, calculées à l'exécution de la requête, et la fonction uuidv7()
qui permet à la fois une meilleure indexation et une meilleure performance en lecture sur les UUIDs.
PostgreSQL 18 rend son intégration plus simple avec les systèmes single sign on (SSO) en supportant l'authentification OAuth 2.0.
« Les efforts de la communauté open source mondiale façonnent chaque publication de PostgreSQL et permettent de livrer des fonctionnalités qui correspondent aux attentes des utilisateurs au plus près de leurs données » déclare Jonathan Katz, un membre de la core team de PostgreSQL. « PostgreSQL 18 s'appuie sur l'historique long et riche du projet, centré sur la fiabilité et la robustesse du gestionnaire de données, tout en étoffant les charges de travail qu'il prend en charge. »
PostgreSQL, système innovant de gestion des données, reconnu pour sa fiabilité et sa robustesse, bénéficie depuis près de 30 ans d'un développement open source par une communauté mondiale de développeurs et développeuses. Il est devenu le système de gestion de bases de données relationnelles de référence pour les organisations de toute taille.
Précédemment, PostgreSQL s'appuyait sur les mécanismes de lecture anticipée du système d'exploitation pour accélérer la récupération des données sur disque. Cependant, comme les systèmes d'exploitation n'ont pas la connaissance des modèles d'accès propres à la base de données, ils ne peuvent pas toujours anticiper les données nécessaires, entraînant une performance sous-optimale pour de nombreuses charges de travail.
PostgreSQL 18 introduit un nouveau sous-système d'E/S asynchrones (AIO) pour traiter ces limitations. AIO permet à PostgreSQL d'effectuer plusieurs demandes d'E/S de façon concurrente plutôt que d'attendre que chacune se termine en séquence. Ceci étend la lecture anticipée et améliore la bande passante globale. Les opérations AIO supportées dans PostgreSQL 18 incluent les lectures séquentielles, les lectures bitmap des fichiers heap ainsi que les opérations de vacuum. Les tests ont démontré une performance multipliée par 3 sur certains scénarios.
Le nouveau paramètre io_method
permet de choisir entre les méthodes AIO worker
et io_uring
ou de conserver le comportement habituel de PostgreSQL avec la valeur sync
. De nouveaux paramètres sont à a prendre en compte pour régler AIO, comme l'explique la documentation.
Une des fonctionnalités clé de PostgreSQL est la génération et le stockage de statistiques permettant à PostgreSQL de choisir le plan de requêtage le plus efficace. Avant PostgreSQL 18, ces statistiques n'étaient pas conservées lors d'une mise à jour majeure de version. Ceci pouvait causer des dégradations de performances sur les systèmes chargés jusqu'à ce que l'exécution d'ANALYZE
se termine. PostgreSQL 18 apporte la possibilité de garder les statistiques du planificateur lors d'une mise à jour de version majeure, ce qui permet à une instance d'être plus rapidement performante après l'opération.
De plus, pg_upgrade
, outil de mises à jour majeures, inclut plusieurs améliorations dans PostgreSQL 18, telles que des mises à jour plus rapides lorsqu'une base de données contient beaucoup d'objets de type tables ou séquences. Avec cette version, pg_upgrade
traite ses vérifications en parallèle en se basant sur le paramètre --jobs
et ajoute un autre paramètre --swap
qui intervertit les répertoires au lieu de copier, cloner ou lier les fichiers.
PostgreSQL 18 améliore encore la performance des requêtes avec des fonctionnalités qui optimisent automatiquement les traitements.
Cette version introduit les recherches « skip scan » sur les index B-tree multicolonnes améliorant les temps d'exécution pour les requêtes qui omettent une condition =
sur une ou plusieurs colonnes préfixes de l'index. Cela peut favoriser l'utilisation d'un index sur des requêtes qui utilisent des conditions OR
dans un WHERE
, accélérant significativement leur exécution.
Cette version apporte de nombreuses améliorations sur la manière dont PostgreSQL planifie et exécute les jointures de tables. Cela comprend de meilleures performances sur les jointures par hachage ou l'utilisation de tris incrémentaux lors de jointures par fusion (merge joins). PostgreSQL 18 apporte la construction parallèle pour les index GIN, les plaçant au niveau des index B-tree et des index BRIN qui exploitent déjà cette fonctionnalité.
Cette version étend le support de l'accélération matérielle, incluant le support pour l'ARM NEON et SVE CPU pour la prise en charge intrinsèque de la fonction popcount
, qui est utilisée par bit_count
et autres fonctionnalités internes.
PostgreSQL 18 introduit les colonnes générées virtuelles dont les valeurs sont calculées à la requête, et non stockées. À partir de cette version, il s'agit du comportement 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 courantes (NEW
) dans la clause RETURNING
pour les commandes INSERT
, UPDATE
, DELETE
et MERGE
.
PostgreSQL 18 propose également la génération de UUIDv7 au travers de la fonction uuidv7()
autorisant l'utilisateur à générer des UUIDs aléatoires ordonnés dans le temps ce qui permet la mise en œuvre de meilleures stratégies de cache. PostgreSQL 18 inclut uuidv4()
, un alias pour gen_random_uuid()
.
PostgreSQL 18 ajoute des contraintes temporelles, -- contraintes sur intervalles -- à la fois pour les contraintes PRIMARY KEY
et UNIQUE
en utilisant la clause WITHOUT OVERLAPS
, et sur les contraintes FOREIGN KEY
en utilisant la clause PERIOD
.
Enfin, PostgreSQL 18 simplifie la création de tables étrangères en utilisant la définition d'une table locale. Cette opération est réalisée par la commande CREATE FOREIGN TABLE ... LIKE
.
De nombreuses améliorations simplifient et accélèrent la gestion du texte dans PostgreSQL 18. Cette version ajoute la collation PG_UNICODE_FAST
qui fournit les sémantiques Unicode pour les conversions de casse et accélère nombre de comparaisons. Cela inclut les fonctions de comparaisons de chaînes upper
et lower
et la nouvelle fonction de comparaisons insensibles à la casse casefold
. De plus, PostgreSQL 18 supporte désormais les comparaisons LIKE
de texte utilisant une collation non déterministe, ce qui simplifie la recherche de correspondances complexes. Cette version modifie également la recherche plein texte pour utiliser le fournisseur de collation par défaut d'une instance plutôt que l'utilisation constante de la libc. Cela peut nécessiter de réindexer tous les index recherche plein texte et pg_trgm
après avoir lancé pg_upgrade
.
PostgreSQL 18 transcrit les conflits en écriture de réplication logique dans les journaux et dans la vue pg_stat_subscription_stats
. De plus, CREATE SUBSCRIPTION
utilise désormais par défaut des flux parallèles pour appliquer les transactions, ce qui contribue à améliorer la performance de la réplication.
L'utilitaire pg_createsubscriber
dispose maintenant d'un paramètre --all
permettant de créer des réplicas logiques pour toutes les bases d'une instance avec une seule commande.
PostgreSQL 18 permet également d'automatiser la suppression des slots de réplications inactifs. Cela permet d'éviter de stocker trop de fichiers WAL sur le serveur de publication.
PostgreSQL 18 améliore sa stratégie de vacuum en gelant plus de pages de manière proactive durant les vacuums classiques. Ceci est une aide importante et permet de réduire la surcharge lors des situations où un vacuum agressif est nécessaire.
PostgreSQL 18 ajoute plus de détails à la commande EXPLAIN
, fournissant les informations sur le plan d'exécution d'une requête. À partir de cette version, les informations sur le nombre de tampons (l'unité fondamentale de stockage des données) accédés sont affichées automatiquement lors de l'exécution de EXPLAIN ANALYZE
. EXPLAIN ANALYZE
indique également le nombre de recherches effectuées dans un index lors d'un balayage d'index. EXPLAIN ANALYZE VERBOSE
inclut des statistiques sur le CPU, les WAL, et la moyenne des lectures sur disque. PostgreSQL 18 inclut plus d'informations dans pg_stat_all_tables
sur le temps passé sur le vacuum et les opérations associées, ainsi que des statistiques par connexion sur les entrées/sorties et l'utilisation des WAL.
Les sommes de contrôles sur les pages sont maintenant activées par défaut sur les bases de données initialisées avec l'outil initdb
de PostgreSQL 18.
Cela peut avoir un impact sur les montées de version des clusters pour lesquels les sommes de contrôle ne sont pas activées. Dans ce cas, il sera nécessaire de créer un nouveau cluster PostgreSQL 18 avec l'option --no-data-checksums
pour pouvoir utiliser pg_upgrade
.
PostgreSQL 18 introduit également une nouvelle version (3.2) du protocole natif PostgreSQL. Il s'agit de la première évolution du protocole depuis PostgreSQL 7.4 (2003). libpq
utilise toujours la version 3.0 par défaut pour laisser le temps aux clients (par exemple, les pilotes, les poolers et les proxies) d'ajouter le support de la nouvelle version du protocole.
PostgreSQL est le système de gestion de bases de données libre de référence. Sa communauté mondiale est composée de plusieurs milliers d’utilisateurs, utilisatrices, contributeurs, contributrices, entreprises et institutions. Le projet PostgreSQL, démarré il y a plus de 30 ans à l’université de Californie, à Berkeley, a atteint aujourd’hui un rythme de développement sans pareil. L’ensemble des fonctionnalités proposées est mature, et dépasse même celui des systèmes commerciaux leaders sur les fonctionnalités avancées, les extensions, la sécurité et la stabilité.
PostgreSQL est le système de gestion de bases de données libre de référence. Sa communauté mondiale est composée de plusieurs milliers d’utilisateurs, utilisatrices, contributeurs, contributrices, entreprises et institutions. Le projet PostgreSQL, démarré il y a plus de 30 ans à l’université de Californie, à Berkeley, a atteint aujourd’hui un rythme de développement sans pareil. L’ensemble des fonctionnalités proposées est mature, et dépasse même celui des systèmes commerciaux leaders sur les fonctionnalités avancées, les extensions, la sécurité et la stabilité.
Learn more about PostgreSQL and participate in our community at PostgreSQL.org.
Les liens suivants fournissent de plus amples informations sur les fonctionnalités ci-dessus et toutes les autres :
Il existe plusieurs façons de télécharger PostgreSQL 18, dont :
D'autres outils et extensions sont disponibles sur le PostgreSQL Extension Network.
La documentation au format HTML et les pages de manuel sont installées avec PostgreSQL. La documentation peut également être consultée en ligne ou récupérée au format PDF.
PostgreSQL utilise la licence PostgreSQL, licence « permissive » de type BSD. Cette licence certifiée OSI est largement appréciée pour sa flexibilité et sa compatibilité avec le monde des affaires, puisqu'elle ne restreint pas l'utilisation de PostgreSQL dans les applications propriétaires ou commerciales. Associée à un support proposé par de multiples sociétés et une propriété publique du code, sa licence rend PostgreSQL très populaire parmi les revendeurs souhaitant embarquer une base de données dans leurs produits sans avoir à se soucier des prix de licence, des verrous commerciaux ou modifications des termes de licence.
Site internet
Courriel
Postgres, PostgreSQL et le logo éléphant (Slonik) sont des marques déposées de l'Association de la Communauté PostgreSQL. Si vous souhaitez utiliser ces marques, vous devez vous conformer à la politique de la marque.
PostgreSQL bénéficie du support de nombreuses sociétés, qui financent des développeurs et développeuses, fournissent l'hébergement ou un support financier. Les plus fervents supporters sont listés sur la page des sponsors.
Il existe également une très grande communauté de sociétés offrant du support PostgreSQL, du consultant indépendant aux entreprises multinationales.
Les dons au PostgreSQL Global Development Group, ou à l'une des associations à but non lucratif, sont acceptés et encouragés.