PostgreSQL 17 apporte des gains de performance significatifs, incluant une implémentation révisée de la gestion de la mémoire pour vacuum, des optimisations de l'accès au stockage et des améliorations pour les charges de travail à forte concurrence, des accélérations dans le chargement en masse et les exportations, et des améliorations dans l'exécution des requêtes pour les index.
PostgreSQL 17 propose des fonctionnalités qui profitent aussi bien aux nouvelles charges de travail qu'aux systèmes critiques, telles que l'amélioration de l'expérience des développeurs avec la commande SQL/JSON JSON_TABLE, et les améliorations de la réplication logique qui simplifient la gestion des charges de travail à haute disponibilité et des mises à jour de versions majeures.
"PostgreSQL 17 illustre la façon dont la communauté open source mondiale, qui dirige le développement de PostgreSQL, construit des améliorations qui aident les utilisateurs à toutes les étapes de leur voyage dans les bases de données", a déclaré Jonathan Katz, membre de l'équipe principale de PostgreSQL. "Qu'il s'agisse d'améliorations pour l'exploitation des bases de données à grande échelle ou de nouvelles fonctionnalités qui s'appuient sur une expérience de développement agréable, PostgreSQL 17 améliorera votre expérience de la gestion des données".
Des gains de performance sur l'ensemble du système
Le processus du vacuum de PostgreSQL est critique pour des opérations saines, nécessitant des ressources d'instance de serveur pour fonctionner. PostgreSQL 17 introduit une nouvelle structure de mémoire interne pour le vacuum qui consomme jusqu'à 20 fois moins de mémoire. Cela améliore la vitesse du vacuum et réduit également l'utilisation des ressources partagées, ce qui permet de libérer plus de ressources pour votre charge de travail.
PostgreSQL 17 continue d'améliorer les performances de sa couche d'E/S. Les charges de travail à forte concurrence peuvent voir leur débit d'écriture multiplié par deux grâce aux améliorations apportées au traitement des journaux en avance sur l'écriture (WAL). De plus, la nouvelle interface d'E/S en continu accélère les scans séquentiels (lecture de toutes les données d'une table) et la vitesse à laquelle ANALYZE peut mettre à jour les statistiques du planificateur.
PostgreSQL 17 étend également ses gains de performance à l'exécution des requêtes. PostgreSQL 17 améliore les performances des requêtes avec des clauses IN qui utilisent des index B-tree, la méthode d'indexation par défaut de PostgreSQL. De plus, les index BRIN supportent désormais les constructions parallèles. PostgreSQL 17 inclut plusieurs améliorations pour la planification des requêtes, y compris des optimisations pour les contraintes NOT NULL, et des améliorations dans le traitement des expressions de table communes (requêtes WITH). Cette version ajoute plus de support SIMD (Single Instruction/Multiple Data) pour accélérer les calculs, y compris l'utilisation d'AVX-512 pour la fonction bit_count.
Extension de l'expérience des développeurs
PostgreSQL a été la première base de données relationnelle à ajouter le support JSON (2012), et PostgreSQL 17 ajoute à son implémentation du standard SQL/JSON. JSON_TABLE est maintenant disponible dans PostgreSQL 17, permettant aux développeurs de convertir les données JSON dans une table PostgreSQL standard. PostgreSQL 17 supporte maintenant les constructeurs SQL/JSON (JSON, JSON_SCALAR, JSON_SERIALIZE) et les fonctions de requête (JSON_EXISTS, JSON_QUERY, JSON_VALUE), donnant aux développeurs d'autres moyens d'interagir avec leurs données JSON. Cette version ajoute plus d'expressions jsonpath, en mettant l'accent sur la conversion des données JSON vers un type de données natif de PostgreSQL, y compris les types numérique, booléen, chaîne de caractères et date/heure.
PostgreSQL 17 ajoute plus de fonctionnalités à MERGE, qui est utilisé pour les mises à jour conditionnelles, y compris une clause RETURNING et la possibilité de mettre à jour les vues. De plus, PostgreSQL 17 offre de nouvelles fonctionnalités pour le chargement en masse et l'exportation de données, y compris une amélioration des performances jusqu'à 2 fois lors de l'exportation de grandes lignes en utilisant la commande COPY. Les performances de COPY sont également améliorées lorsque les encodages de la source et de la destination correspondent, et incluent une nouvelle option, ON_ERROR, qui permet à une importation de continuer même s'il y a une erreur d'insertion.
Cette version étend les fonctionnalités de gestion des données dans les partitions et des données distribuées sur des instances PostgreSQL distantes. PostgreSQL 17 supporte l'utilisation des colonnes d'identité et des contraintes d'exclusion sur les tables partitionnées. Le wrapper de données étrangères de PostgreSQL (postgres_fdw), utilisé pour exécuter des requêtes sur des instances PostgreSQL distantes, peut maintenant pousser les sous-requêtes EXISTS et IN vers le serveur distant pour un traitement plus efficace.
PostgreSQL 17 inclut également un fournisseur de collation immuable intégré, indépendant de la plate-forme, qui est garanti immuable et fournit une sémantique de tri similaire à la collation C, mais avec un encodage UTF-8 au lieu de SQL_ASCII. L'utilisation de ce nouveau fournisseur de collation garantit que vos requêtes textuelles renverront les mêmes résultats triés quel que soit l'endroit où vous exécutez PostgreSQL.
Améliorations de la réplication logique pour la haute disponibilité et les mises à jour de versions majeures
La réplication logique est utilisée pour diffuser des données en temps réel dans de nombreux cas d'utilisation. Cependant, avant cette version, les utilisateurs qui voulaient effectuer une mise à niveau de version majeure devaient abandonner les slots de réplication logique, ce qui nécessite de resynchroniser les données vers les abonnés après une mise à niveau. À partir de PostgreSQL 17, les utilisateurs n'ont plus besoin d'abandonner les slots de réplication logique, ce qui simplifie le processus de mise à jour lors de l'utilisation de la réplication logique.
PostgreSQL 17 inclut maintenant le contrôle de basculement pour la réplication logique, la rendant plus résiliente lorsqu'elle est déployée dans des environnements de haute disponibilité. De plus, PostgreSQL 17 introduit l'outil en ligne de commande pg_createsubscriber pour convertir une réplique physique en une nouvelle réplique logique.
Plus d'options pour gérer la sécurité et les opérations
PostgreSQL 17 étend encore la façon dont les utilisateurs peuvent gérer le cycle de vie global de leurs systèmes de base de données. PostgreSQL dispose d'une nouvelle option TLS, sslnegotiation, qui permet aux utilisateurs d'effectuer un échange TLS direct lors de l'utilisation d'ALPN (enregistré en tant que postgresql dans le répertoire ALPN). PostgreSQL 17 ajoute également le rôle prédéfini pg_maintain, qui donne aux utilisateurs la permission d'effectuer des opérations de maintenance.
pg_basebackup, l'utilitaire de sauvegarde inclus dans PostgreSQL, supporte maintenant les sauvegardes incrémentales et ajoute l'utilitaire pg_combinebackup pour reconstruire une sauvegarde complète. De plus, pg_dump inclut une nouvelle option appelée --filter qui vous permet de sélectionner les objets à inclure lors de la génération d'un fichier dump.
PostgreSQL 17 inclut également des améliorations dans les fonctionnalités de surveillance et d'analyse. EXPLAIN affiche désormais le temps passé pour les lectures et écritures de blocs d'E/S locales, et inclut deux nouvelles options : SERIALIZE et MEMORY, utiles pour voir le temps passé dans la conversion des données pour la transmission réseau, et la quantité de mémoire utilisée. PostgreSQL 17 rapporte maintenant la progression de l'aspiration des index, et ajoute la vue système pg_wait_events qui, combinée avec pg_stat_activity, donne plus d'informations sur les raisons pour lesquelles une session active est en attente.
Source : Annonce de PostgreSQL 17
Et vous ?
Quel est votre avis sur cette mise à jour ?
Voir aussi :
PostgreSQL 16 est disponible, la dernière version de la base de données open source apporte des améliorations au parallélisme des requêtes et à la réplication logique
MongoDB attribue ses bons résultats trimestriels en partie à des victoires compétitives contre PostgreSQL, le système le plus populaire parmi les développeurs professionnels selon un sondage
La Grande Migration de MongoDB vers PostgreSQL : comment Infisical a réussi le passage ? Quelles sont les raisons qui l'ont motivée à quitter MongoDB et pourquoi s'est-elle orientée vers PostgreSQL ?