PostgreSQL 19 Bêta 1 publiée
Le PostgreSQL Global Development Group annonce la disponibilité de la première bêta de PostgreSQL 19 en téléchargement.
Cette publication contient un aperçu des fonctionnalités qui seront disponibles dans la version finale de PostgreSQL 19, bien que des modifications puissent intervenir pendant la période bêta.
Vous pouvez trouver des informations sur toutes les fonctionnalités et les changements de PostgreSQL 19 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 19 dans vos systèmes afin de nous aider à éliminer les bogues et autres problèmes. Bien que nous ne vous conseillons pas de faire fonctionner cette publication 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 19 respecte nos standards de stabilité et de fiabilité pour continuer à en faire la base de données relationnelle open-source la plus avancée du monde. Vous pouvez également vous renseigner sur notre processus de beta testing et comment y contribuer.
Principales fonctionnalités de PostgreSQL 19
Vous trouverez ci-dessous les principales fonctionnalités planifiées pour PostgreSQL 19. Cette liste n’est pas exhaustive : pour la liste complète des fonctionnalités, se référer à la note de publication.
Performance
PostgreSQL capitalise sur le sous-système d’I/O asynchrone introduit
dans PostgreSQL 18. Dans cette publication, io_method=worker
augmente automatiquement le nombre de processus d’I/O, en se basant
sur les nouveaux paramètres io_min_workers
et io_max_worker.
Cette publication introduit aussi l’extension pg_plan_advice, qui
permet aux utilisateurs de contrôler et stabiliser les décisions du
planner, accompagné de pg_stash_advice pour appliquer
automatiquement les choix en utilisant les identifiants de requête.
Cette publication apporte des améliorations à VACUUM et aux opérations
de maintenance. Autovacuum peut maintenant utiliser de la
parallélisation, qui peut être configurée avec le nouveau paramètre
autovacuum_max_parallel_workers,
et un nouveau système de notation
aide à prioriser les tables à traiter par VACUUM. De plus, PostgreSQL
19 améliore VACUUM avec une nouvelle stratégie réduisant
automatiquement la quantité de travail en marquant les pages comme
visibles tant qu’elles sont requêtées.
Enfin, cette publication ajoute
la commande REPACK et son option non bloquante CONCURRENTLY, ce qui
permet de reconstruire des tables avec moins de surcharge
opérationnelle.
PostgreSQL double les performances des INSERT
lorsque des vérifications de clés étrangères
interviennent.
De plus,
cette publication améliore plusieurs aires de la planification et de
l’exécuteur de requêtes, incluant des optimisations sur les anti-join,
une utilisation plus large des tris incrémentaux, une agrégation anticipée
qui accélère le traitement des lignes, des lectures plus
rapides à partir du stockage pendant les lectures séquentielles
parallélisées, et une simplification de IS DISTINCT FROM
et IS NOT DISTINCT FROM
vers les opérateurs <> et = lorsque les données en entrées ne peuvent
pas être NULL.
Il y a aussi des améliorations de la montée en charge de
LISTEN/NOTIFY
impactant les charges multi-channel.
Expérience développeur
PostgreSQL 19 introduit le support de SQL/PGQ, permettant aux utilisateurs d’exécuter des « Property Graph Queries » en utilisant la syntaxe SQL standard.
Cette publication étend aussi les possibilités
des requêtes temporelles avec le support de la clause FOR PORTION OF
pour les commandes UPDATE et DELETE, complétant le support des
contraintes temporelles ajoutées dans PostgreSQL 18.
Cette publication
ajoute aussi les commandes ALTER TABLE ... MERGE PARTITIONS
et ALTER TABLE ... SPLIT PARTITIONS pour faciliter la réorganisation à
la volée des tables partitionnées.
Il y a aussi maintenant le support
des lignes retournées en conflit pendant une opération « upsert »
utilisant la commande INSERT ... ON CONFLICT DO SELECT ... RETURNING.
PostgreSQL 19 introduit la nouvelle syntaxe GROUP BY ALL,
facilitant l’ajout de toutes les colonnes non agrégées et non issues d’une
fonction fenêtrée au regroupement.
Cette publication
étend les capacités de traitement des chaines de caractères dans
JSONPATH avec l’ajout des fonctions lower(), upper(), initcap(),
replace(), split_part() et la famille de fonctions trim().
PostgreSQL facilite l’adoption de motifs de requêtes
« read-your-writes » lorsqu’on travaille avec des réplicas en utilisant
la commande WAIT FOR LSN. Ceci permet à une session d’attendre un
changement lié au rejeu d’une position spécifique du log (LSN)
sur le replica avant d’exécuter une requête SELECT.
PostgreSQL 19 ajoute aussi de nouvelles fonctions SQL pour récupérer les commandes DDL nécessaires pour recréer des rôles, tablespaces et bases de données, simplifiant l’écriture de scripts et de tâches de migration.
De plus, la fonction random()
fonctionne maintenant avec
des dates et des horodatages, et le langage PL/Python
supporte désormais les déclencheurs sur événement (« events triggers »).
Fonctionnalité liées à la sécurité
PostgreSQL ajoute le support côté serveur de « Server Name Indication »
(SNI) à travers un nouveau fichier de configuration :
pg_hosts.conf,
permettant à un serveur PostgreSQL de présenter
différents certificats TLS basés sur le nom demandé par le client.
Il y
a aussi un nouveau paramètre password_expiration_warning_threshold,
par défaut à 7 jours, avertissant l’utilisateur d’une prochaine
expiration du mot de passe.
À la suite des efforts pour la dépréciation de l’authentification md5,
cette publication émet un avertissement au client après une
authentification md5 réussie. Ceci est contrôlable à travers le
nouveau paramètre md5_password_warnings.
Supervision et observabilité
PostgreSQL introduit une nouvelle vue pg_stat_lock,
qui rapporte des statistiques par type de verrous, et une vue
pg_stat_recovery
fournissant une visibilité détaillée sur l’état des opérations de
récupération.
Une colonne stats_reset est maintenant disponible dans
différentes vues statistiques montrant le moment de la remise à zéro
des compteurs.
Les vues pg_stat_progress_vacuum et
pg_stat_progress_analyze
incluent maintenant une colonne
started_by rapportant l’initiateur de l’opération, et la vue
pg_stat_progress_vacuum a aussi une colonne mode montrant comment
le VACUUM est opéré.
Cette publication permet aussi au niveau de log_min_messages
d’être spécifié par type de processus, donnant aux opérateurs un
contrôle fin sur chaque partie du système de traces.
De plus, les
quantités d’octets de l’écriture de pages pleines (FPW) dans les
journaux de transactions (WAL) sont maintenant rapportées dans les
messages de traces de VACUUM
et ANALYZE, aidant à l’identification
des opérations de maintenance produisant de grandes quantités de
WAL.
De plus, EXPLAIN ANALYZE
supporte maintenant la visualisation
des statistiques des I/O asynchrones à travers son option IO,
fournissant une meilleure visibilité sur la manière qu’ont les requêtes
d’utiliser le sous-système d’I/O asynchrone.
Réplication logique et requêtes fédérées
Dans PostgreSQL 19, la replication logique réplique maintenant les
valeurs des séquences, simplifiant les tâches de mise à jour. De plus,
la nouvelle syntaxe CREATE PUBLICATION ... EXCEPT
vous permet de publier toutes les tables d’une base de données, à l’exception d’un
sous-ensemble spécifique, tandis que CREATE SUBSCRIPTION ... SERVER
permet à un abonnement d’utiliser en serveur étranger (FOREIGN SERVER), simplifiant la gestion des accès.
PostgreSQL 19 rend possible l’activation de la réplication logique
sans redémarrage du serveur. La réplication logique peut maintenant
être activée à la demande même lorsque le paramètre wal_level
est positionné à replica, et le nouveau paramètre en lecture seule
effective_wal_level
indique quel est le niveau réel. Ceci réduit le
besoin d’activer en avance un niveau de WAL trop élevé lorsque le
besoin n’est qu’occasionnel, et évite la rupture de l’activité.
Le pilote de données étrangères de PostgreSQL, postgres_fdw,
utilisé pour de la fédération de requête, inclut plusieurs améliorations de
performance, dont le « push down » d’opérations sur les tableaux vers
le serveur distant, et en récupérant et utilisant les statistiques des
tables étrangères pour une meilleure planification locale.
Autres points importants
La période bêta de PostgreSQL a un mode « grease » temporaire pour tenter d’identifier des problèmes de compatibilité du protocole dans l’écosystème. Cette page du wiki contient les informations sur le fonctionnement de la campagne : https://wiki.postgresql.org/wiki/Grease.
PostgreSQL 19 permet l’activation et la désactivation des sommes de contrôle à la volée, sans nécessiter un redémarrage ou une réinitialisation.
Il y a plusieurs changements importants qui méritent une attention
particulière dans PostgreSQL 19. La compilation Just-in-time (JIT) est
maintenant désactivée par défaut. La valeur par défaut du paramètre
default_toast_compression
est maintenant lz4, amenant de
meilleures performances de compression et décompression par défaut. Le
support de l’authentification RADIUS est supprimé. De plus, la
commande vacuumdb --analyze-only
analyse par défaut les tables partitionnées.
Fonctionnalités supplémentaires
De nombreuses autres fonctionnalités et améliorations ont été ajoutées à PostgreSQL. En fonction des cas d’usage, 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/19/release-19.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 19.
É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 19. 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 2026.
Pour plus d’information, veuillez consulter la page Beta Testing.
Liens
- Téléchargement
- Information sur le Bêta Testing
- Notes de publication de PostgreSQL 19 Bêta
- Problèmes connus de PostgreSQL 19
- Soumettre un bogue
- Faire un don
Crédits photo : Carlos Gonzalez