PostgreSQL 16 est disponible

Par:
fredericmazue

ven, 15/09/2023 - 12:41

Le groupe de développement PostgreSQL a annoncé aujourd'hui la sortie de PostgreSQL 16. Une version qui augmente ses performances, avec des améliorations notables du parallélisme des requêtes, du chargement de données en masse et de la réplication logique. Cette version comporte de nombreuses fonctionnalités destinées aux développeurs et aux administrateurs, notamment davantage de syntaxe SQL/JSON, de nouvelles statistiques de surveillance de vos charges de travail et une plus grande flexibilité dans la définition de règles de contrôle d'accès pour la gestion des politiques sur les grands parcs.

« A mesure que les modèles de bases de données relationnelles évoluent, PostgreSQL continue de gagner en performances dans la recherche et la gestion des données à grande échelle », a déclaré Dave Page, membre de l'équipe principale de PostgreSQL. « PostgreSQL 16 offre aux utilisateurs davantage de méthodes pour faire évoluer leurs charges de travail, tout en leur offrant de nouvelles façons d'obtenir des informations et d'optimiser la façon dont ils gèrent leurs données. »

Amélioration des performances

PostgreSQL 16 améliore les performances des fonctionnalités PostgreSQL existantes grâce à de nouvelles optimisations du planificateur de requêtes. Dans cette dernière version, le planificateur de requêtes peut paralléliser les jointures FULL et RIGHT, générer des plans mieux optimisés pour les requêtes qui utilisent des fonctions d'agrégation avec une clause DISTINCT ou ORDER BY, utiliser des tris incrémentiels pour les requêtes SELECT DISTINCT et optimiser les fonctions de fenêtre afin qu'elles s'exécutent plus efficacement. Il améliore également les « anti-jointures » RIGHT et OUTER, qui permettent aux utilisateurs d'identifier les lignes non présentes dans une table jointe.

Cette version inclut des améliorations pour le chargement en bloc à l'aide de COPY dans les opérations simples et simultanées, avec des tests montrant jusqu'à 300 % d'amélioration des performances dans certains cas. PostgreSQL 16 ajoute la prise en charge de l'équilibrage de charge dans les clients qui utilisent libpq, ainsi que des améliorations de la stratégie de vide qui réduisent la nécessité de geler des tables complètes. De plus, PostgreSQL 16 introduit l'accélération du processeur à l'aide de SIMD dans les architectures x86 et ARM, ce qui entraîne des gains de performances lors du traitement des chaînes ASCII et JSON et lors des recherches de tableaux et de sous-transactions.

Réplication logique

La réplication logique permet aux utilisateurs de diffuser des données vers d'autres instances ou abonnés PostgreSQL capables d'interpréter le protocole de réplication logique PostgreSQL. Dans PostgreSQL 16, les utilisateurs peuvent effectuer une réplication logique à partir d'une instance de secours, ce qui signifie qu'une instance de secours peut publier des modifications logiques sur d'autres serveurs. Cela offre aux développeurs de nouvelles options de répartition de la charge de travail, par exemple en utilisant un serveur de secours plutôt que le serveur principal le plus occupé pour répliquer logiquement les modifications apportées aux systèmes en aval.

De plus, PostgreSQL 16 présente plusieurs améliorations de performances en matière de réplication logique. Les abonnés peuvent désormais appliquer des transactions volumineuses à l'aide de travailleurs parallèles. Pour les tables qui n'ont pas de clé primaire, les abonnés peuvent utiliser des index B-tree au lieu d'analyses séquentielles pour rechercher des lignes. Sous certaines conditions, les utilisateurs peuvent également accélérer la synchronisation initiale des tables en utilisant le format binaire.

Il existe plusieurs améliorations du contrôle d'accès à la réplication logique dans PostgreSQL 16, notamment le nouveau rôle prédéfini pg_create_subscription, qui accorde aux utilisateurs la possibilité de créer de nouveaux abonnements logiques. Enfin, cette version commence à ajouter la prise en charge de la réplication logique bidirectionnelle, en introduisant une fonctionnalité permettant de répliquer des données entre deux tables provenant d'éditeurs différents.

Expérience du développeur

PostgreSQL 16 ajoute davantage de syntaxe du standard SQL/JSON, notamment des constructeurs et des prédicats tels que JSON_ARRAY(), JSON_ARRAYAGG() et IS JSON. Cette version introduit également la possibilité d'utiliser des traits de soulignement pour les séparateurs de milliers (par exemple 5_432_000) et des littéraux entiers non décimaux, tels que 0x1538, 0o12470 et 0b1010100111000.

Les développeurs utilisant PostgreSQL 16 bénéficient également des nouvelles commandes de psql. Cela inclut \bind, qui permet aux utilisateurs de préparer des requêtes paramétrées et d'utiliser \bind pour remplacer les variables (par exemple SELECT $1::int + $2::int \bind 1 2 \g).

PostgreSQL 16 améliore la prise en charge générale des classements de texte, qui fournissent des règles sur la manière dont le texte est trié. PostgreSQL 16 est construit avec la prise en charge d'ICU par défaut, détermine les paramètres régionaux ICU par défaut à partir de l'environnement et permet aux utilisateurs de définir des règles de classement ICU personnalisées.

Surveillance

Un aspect clé de l’optimisation des performances des charges de travail de base de données consiste à comprendre l’impact de vos opérations d’E/S sur votre système. PostgreSQL 16 introduit pg_stat_io, une nouvelle source de métriques d'E/S clés pour l'analyse granulaire des modèles d'accès aux E/S.

De plus, cette version ajoute un nouveau champ à la vue pg_stat_all_tables qui enregistre un horodatage représentant la dernière analyse d'une table ou d'un index. PostgreSQL 16 rend également auto_explain plus lisible en enregistrant les valeurs transmises dans les instructions paramétrées et améliore la précision de l'algorithme de suivi des requêtes utilisé par pg_stat_statements et pg_stat_activity.

Contrôle d'accès et sécurité

PostgreSQL 16 fournit des options plus fines pour le contrôle d'accès et améliore d'autres fonctionnalités de sécurité. La version améliore la gestion des fichiers pg_hba.conf et pg_ident.conf, notamment en permettant la correspondance d'expressions régulières pour les noms d'utilisateur et de base de données et en incluant des directives pour les fichiers de configuration externes.

Cette version ajoute plusieurs paramètres de connexion client orientés sécurité, notamment require_auth, qui permet aux clients de spécifier les paramètres d'authentification qu'ils sont prêts à accepter d'un serveur, et sslrootcert="system", qui indique que PostgreSQL doit utiliser l'autorité de certification de confiance (CA ) magasin fourni par le système d'exploitation du client. De plus, la version ajoute la prise en charge de la délégation des informations d'identification Kerberos, permettant à des extensions telles que postgres_fdw et dblink d'utiliser des informations d'identification authentifiées pour se connecter à des services de confiance.

Site : postgresql.org