PostgreSQL 17 Beta 1

Par:
fredericmazue

mar, 28/05/2024 - 13:52

Le PostgreSQL Global Development Group annonce que la première version bêta de PostgreSQL 17 est désormais disponible en téléchargement. Voici quelques-uns des points forts des fonctionnalités de PostgreSQL 17

Améliorations des requêtes et des performances opérationnelles

PostgreSQL 17 s'appuie sur les versions récentes et continue d'améliorer les performances sur l'ensemble du système. Vacuum, le processus PostgreSQL responsable de la récupération du stockage, dispose d'une nouvelle structure de données interne qui a montré une réduction de mémoire jusqu'à 20 fois, ainsi que des améliorations du temps global pour terminer son travail. De plus, le processus de vide n'a plus de limite de 1 Go sur la mémoire qu'il peut utiliser (contrôlée par maintenance_work_mem), vous donnant la possibilité d'appliquer plus de ressources au vide.

Cette version introduit une interface pour diffuser les E/S et peut montrer des améliorations de performances lors de l'exécution d'analyses séquentielles et de l'exécution d'ANALYZE. PostgreSQL 17 inclut également des paramètres de configuration qui peuvent contrôler l'évolutivité des tampons de transaction, de sous-transaction et multixact.

PostgreSQL 17 peut désormais utiliser à la fois les statistiques du planificateur et l'ordre de tri des expressions de table communes (AVEC requêtes) pour optimiser davantage ces requêtes et les aider à s'exécuter plus rapidement. De plus, cette version améliore considérablement le temps d'exécution des requêtes qui utilisent la clause IN avec un index B-tree. À partir de cette version, PostgreSQL peut supprimer les instructions IS NOT NULL redondantes de l'exécution sur les colonnes qui ont une contrainte NOT NULL, et n'a plus besoin de travailler sur les requêtes qui contiennent une clause IS NULL sur une colonne IS NOT NULL. Désormais, depuis PostgreSQL 17, vous pouvez utiliser des constructions d'index parallèles pour les index BRIN.

Les charges de travail avec des modifications hautement simultanées peuvent bénéficier de PostgreSQL 17 avec une amélioration de la façon dont les verrous des journaux à écriture anticipée (WAL pour write-ahead log) sont gérés, certains tests montrant jusqu'à une amélioration des performances jusqu'à 2 fois.

Enfin, PostgreSQL 17 ajoute des instructions SIMD plus explicites, notamment la prise en charge AVX-512 pour la fonction bit_count.

Améliorations des charges de travail partitionnées et distribuées

PostgreSQL 17 apporte plus de flexibilité à la gestion des partitions, en ajoutant la possibilité de diviser et de fusionner des partitions, et ajoute la prise en charge des tables partitionnées pour les colonnes d'identité et les contraintes d'exclusion. De plus, le wrapper de données étrangères PostgreSQL (postgres_fdw) peut réaliser des avantages en termes de performances grâce aux requêtes avec des sous-requêtes EXISTS et IN, car celles-ci peuvent désormais être transmises au serveur distant.

PostgreSQL 17 ajoute de nouvelles fonctionnalités à la réplication logique qui simplifient son utilisation dans les charges de travail à haute disponibilité et lors des mises à niveau. À partir des mises à niveau de PostgreSQL 17 vers des versions plus récentes, vous n'avez plus besoin de supprimer les emplacements de réplication logique lors de l'utilisation de pg_upgrade, ce qui vous permet d'éviter de resynchroniser les données après une mise à niveau. De plus, cette version introduit le contrôle de basculement pour la réplication logique, offrant ainsi plus de contrôle pour la gestion des bases de données PostgreSQL dans des environnements à haute disponibilité. PostgreSQL 17 permet également aux abonnés de réplication logique d'utiliser des index de hachage pour les recherches et introduit l'outil de ligne de commande pg_createsubscriber pour ajouter une réplication logique sur une réplique à l'aide de la réplication physique.

Expérience du développeur

PostgreSQL 17 continue de s'appuyer sur la norme SQL/JSON, en ajoutant la prise en charge des fonctionnalités JSON_TABLE qui peuvent convertir JSON en table PostgreSQL standard, ainsi que du constructeur SQL/JSON (JSON, JSON_SCALAR, JSON_SERIALIZE) et des fonctions de requête (JSON_EXISTS, JSON_QUERY, JSON_VALUE). . Notamment, ces fonctionnalités étaient initialement prévues pour la version PostgreSQL 15 mais ont été annulées pendant la période bêta en raison de considérations de conception, ce qui est l'une des raisons pour lesquelles nous vous demandons de nous aider à tester les fonctionnalités pendant la version bêta ! De plus, PostgreSQL 17 ajoute plus de fonctionnalités à son implémentation de jsonpath et la possibilité de convertir les valeurs JSON en différents types de données.

La commande MERGE prend désormais en charge la clause RETURNING, vous permettant de continuer à travailler avec des lignes modifiées. Vous pouvez également voir quelle partie de la commande MERGE a modifié la ligne à l'aide de la nouvelle fonction merge_action. PostgreSQL 17 vous permet également de mettre à jour les vues à l'aide de la commande MERGE et ajoute une clause WHEN NOT MATCHED BY SOURCE pour vous permettre de fournir un comportement si une ligne source ne remplit pas les conditions.