Sortie de PostgreSQL 14 Beta 1
ven, 21/05/2021 - 11:39
Le projet PostgreSQL Global Development Group vient d'annoncer la disponibilité de la première bêta de PostgreSQL 14. Voici quelques-unes des améliorations et nouveautés apportées par cette nouvelle version majeure.
Performance
Cette version présente des améliorations significatives du débit des transactions pour les systèmes PostgreSQL qui ont un grand nombre de connexions à la base de données, qu'ils soient dans un état actif ou inactif. PostgreSQL 14 contient également des gains supplémentaires dans la réduction de la surcharge d'indexation de B-tree, y compris la réduction du gonflement sur les tables avec des index fréquemment mis à jour. Les index GiST peuvent désormais pré-trier les données pendant leur processus de construction, permettant à la fois une création d'index plus rapide et des index plus petits. Les index SP-GiST prennent désormais en charge les index de couverture qui permettent aux utilisateurs d'ajouter des colonnes non recherchées supplémentaires à l'index via la clause INCLUDE.
Il existe de nombreuses améliorations du parallélisme des requêtes dans PostgreSQL 14. En plus des améliorations de performances globales pour les analyses séquentielles parallèles, la directive RETURN QUERY dans PL / pgSQL peut désormais exécuter des requêtes avec parallélisme. REFRESH MATERIALIZED VIEW peut désormais également utiliser le parallélisme des requêtes
PostgreSQL 14 introduit également la possibilité de tirer parti du parallélisme des requêtes lors de l'interrogation de bases de données distantes à l'aide de wrappers de données étrangères. L'encapsuleur de données étrangères PostgreSQL, postgres_fdw, a ajouté la prise en charge de cela dans PostgreSQL 14 lorsque l'indicateur async_capable est défini. postgres_fdw prend également en charge les insertions en bloc et peut importer des partitions de table à l'aide de IMPORT FOREIGN SCHEMA et peut maintenant exécuter TRUNCATE sur des tables étrangères.
Cette version comporte également plusieurs améliorations du système de partitionnement, notamment des gains de performances lors de la mise à jour ou de la suppression de lignes sur des tables où seules quelques partitions sont affectées. Dans PostgreSQL 14, les partitions peuvent maintenant être détachées de manière non bloquante en utilisant la commande ALTER TABLE ... DETACH PARTITION ... CONCURRENTLY.
Le tri incrémentiel, introduit dans la version précédente, peut désormais être utilisé par les fonctions de fenêtre dans PostgreSQL 14. Cette nouvelle version ajoute plus de fonctionnalités aux statistiques étendues, qui peuvent désormais être appliquées aux expressions.
PostgreSQL prend en charge la compression sur ses colonnes de «données surdimensionnées» (c'est-à-dire le système TOAST) depuis des décennies, mais cette version ajoute la possibilité de choisir maintenant d'utiliser la compression LZ4 pour la compression de colonne.
PostgreSQL apporte aussi des améliorations de performances dans les domaines de la réplication et de la récupération. Notamment sur la façon dont PostgreSQL démarre lors d'une récupération après incident, et vous pouvez maintenant utiliser pg_rewind sur une instance PostgreSQL qui est en mode veille.
Types de données + SQL
S'appuyant sur son support existant pour les types de plage, PostgreSQL 14 ajoute le nouveau type multirange qui vous permet de spécifier une liste ordonnée de plages non contiguës, par exemple:
SELECT datemultirange (daterange ('2021-07-01', '2021-07-31'), daterange ('2021-09-01', '2021-09-30'), daterange ('2021-11-01') , '2021-11-30'), daterange ('2022-01-01', '2022-01-31'), daterange ('2022-03-01', '2022-04-07'));
Le nouveau type multirange prend en charge les opérations existantes disponibles pour les types de plage.
PostgreSQL 14 ajoute maintenant un cadre général d'indexation pour récupérer des informations dans des objets imbriqués. Par exemple, vous pouvez maintenant récupérer des informations imbriquées dans le type de données JSONB à l'aide de la syntaxe d'indice, par exemple:
SELECT ('{"this": {"now": {"works": "in postgres 14!"}}}' :: jsonb) ['this'] ['now'] ['works'];
PostgreSQL 14 ajoute également la prise en charge des paramètres OUT dans les procédures stockées et permet à la clause GROUP BY d'utiliser le mot clé DISTINCT pour supprimer les combinaisons GROUPING SET en double.
Pour les expressions de table communes récursives (requêtes WITH), PostgreSQL 14 ajoute les commodités syntaxiques de SEARCH et CYCLE pour aider respectivement à ordonner et à détecter les cycles.
Il y a aussi la nouvelle fonction date_bin dans PostgreSQL 14 qui peut aligner les horodatages avec des intervalles spécifiés, une technique connue sous le nom de «binning».
Administration
PostgreSQL 14 apporte de nombreuses améliorations à VACUUM, avec des optimisations orientées vers les index. Autovacuum analyse désormais les tables partitionnées et peut propager des informations sur le nombre de lignes aux tables parentes. Il existe également des gains de performances dans ANALYZE qui peuvent être contrôlés avec le paramètre maintenance_io_concurrency.
PostgreSQL 14 inclut de nombreuses améliorations sur les informations pouvant être surveillées, y compris la possibilité de suivre la progression de COPY en utilisant la vue pg_stat_progress_copy. Cette version vous permet de suivre l'activité WAL à partir de la vue pg_stat_wal et d'inspecter les statistiques de l'emplacement de réplication à partir de la vue pg_stat_replication_slots.
Il existe plusieurs nouveaux paramètres dans PostgreSQL 14 pour aider à gérer les connexions. Ceux-ci incluent idle_session_timeout, qui peut fermer les connexions inactives après la période spécifiée, et le paramètre client_connection_check_interval qui permet à PostgreSQL d'annuler les longues requêtes en cours si un client se déconnecte
La commande REINDEX peut maintenant traiter tous les index enfants d'une table partitionnée, et PostgreSQL 14 ajoute l'utilitaire pg_amcheck pour aider à vérifier la corruption des données.
La note de version complète de PostgreSQL 14 Bêta 1 est ici.
PostgreSQL 14 Bêta 1 peut être téléchargée ici sur son site officiel. Des binaires sont fournis pour Linux, macOS, Windows, BSD et Solaris.