Après une année de développement, une nouvelle branche stable de la base de données PostgreSQL 15 est publiée. Des mises à jour pour cette nouvelle branche seront disponibles pendant cinq ans jusqu'en novembre 2027.
Les principales nouveautés :
- Ajout du support de la commande SQL « MERGE », similaire à l'instruction « INSERT … ON CONFLICT ». MERGE permet de créer des expressions SQL conditionnelles, combinant dans une seule instruction les opérations INSERT, UPDATE et DELETE. Par exemple, avec MERGE, il est possible d'organiser la fusion de deux tables, en insérant les enregistrements manquants et en mettant à jour ceux existants. MERGE INTO customer_account ca USING recent_transactions t ON t.customer_id = ca.customer_id WHEN MATCHED THEN UPDATE SET balance = balance + transaction_value WHEN NOT MATCHED THEN INSERT (customer_id, balance) VALUES (t.customer_id, t.transaction_value);
- Les algorithmes de tri des données en mémoire et sur disque ont été considérablement améliorés. Selon le type de données, les tests ont montré une augmentation de la vitesse de tri allant de 25 % à 400 %.
- Le fonctionnement des fonctions de fenêtre a été accéléré en utilisant row_number(), rank(), dense_rank() et count().
- La possibilité d'exécution parallèle des requêtes avec l'expression « SELECT DISTINCT » a été mise en œuvre.
- Dans le mécanisme de connexion des tables externes Foreign Data Wrapper (postgres_fdw), le support des commits asynchrones a été ajouté, en complément de la possibilité de traitement asynchrone des requêtes vers des serveurs externes, déjà présente auparavant.
- Ajout de la possibilité d'appliquer les algorithmes LZ4 et Zstandard (zstd) pour la compression des journaux de transactions WAL, ce qui, en fonction de certaines charges, permet d'augmenter simultanément les performances et d'économiser de l'espace disque. Pour réduire le temps de récupération après un incident, le support de la pré-extraction des pages figurant dans le journal WAL a été ajouté.
- L'utilitaire pg_basebackup a ajouté le support de la compression des fichiers de sauvegarde côté de serveurs, en utilisant les méthodes gzip, LZ4 ou zstd. Il est désormais possible d'utiliser des modules personnalisés pour l'archivage, évitant ainsi la nécessité d'exécuter des commandes shell.
- Une série de nouvelles fonctions pour le traitement des chaînes utilisant des expressions régulières a été ajoutée : regexp_count(), regexp_instr(), regexp_like() et regexp_substr().
- Dans la fonction range_agg(), la possibilité d'aggrégation de types multi-plages (« multirange ») a été ajoutée.
- Ajout du mode security_invoker, permettant de créer des vues exécutées avec les droits de l'utilisateur appelant, et non du créateur de la vue.
- La réplication logique prend en charge le filtrage des lignes et la définition de listes de colonnes, permettant ainsi à l'expéditeur de sélectionner un sous-ensemble de données à répliquer à partir de la table. De plus, la gestion des conflits a été simplifiée dans la nouvelle version, avec par exemple la possibilité de passer des transactions conflictuelles et de désactiver automatiquement l'abonnement en cas d'erreur. La réplication logique permet l'utilisation de commits en deux phases (2PC).
- Un nouveau format de logs — jsonlog — a été ajouté, sauvegardant les informations de manière structurée en utilisant le format JSON.
- L'administrateur peut déléguer à des utilisateurs certaines autorisations pour modifier des paramètres spécifiques. configuration du serveur PostgreSQL.
- L'utilitaire psql a été enrichi d'une fonctionnalité permettant de rechercher des informations sur les paramètres (pg_settings) à l'aide de la commande « \dconfig ».
- L'utilisation de la mémoire partagée pour collecter des statistiques sur le fonctionnement du serveur a été mise en place, ce qui a permis d'éliminer le processus séparé de collecte de statistiques et la réinitialisation périodique de l'état sur le disque.
- Il est désormais possible d'utiliser par défaut les locales ICU « ICU Collation », auparavant il n'était possible d'utiliser que les locales libc comme locales par défaut.
- Une extension intégrée appelée pg_walinspect a été proposée, permettant d'inspecter le contenu des fichiers de journaux WAL à l'aide de requêtes SQL.
- Pour le schéma public, tous les utilisateurs, à l'exception du propriétaire de la base de données, ont vu leurs droits sur la commande CREATE révoqués.
- Dans PL/Python, la prise en charge de Python 2 a été supprimée. Le mode de sauvegarde exclusif obsolète a été supprimé.
Ajout : De 19h00 à 20h00 (MSK), un webinaire-discussion sur les changements de la nouvelle version avec Pavel Luzanov (Postgres Professional) aura lieu. Pour ceux qui ne peuvent pas rejoindre en direct, l'enregistrement de la présentation de juin de Pavel « PostgreSQL 15 : MERGE et plus » est disponible sur PGConf.Russia.
Source : opennet.ru
