Version PostgreSQL 12

L'équipe PostgreSQL a annoncé la sortie de PostgreSQL 12, la dernière version du système de gestion de bases de données relationnelles open source.
PostgreSQL 12 a considérablement amélioré les performances des requêtes, en particulier lorsque vous travaillez avec de gros volumes de données, et a également optimisé l'utilisation de l'espace disque en général.

Les nouvelles fonctionnalités incluent :

  • implémentation du langage de requête JSON Path (la partie la plus importante du standard SQL/JSON) ;
  • optimisation de l'exécution des expressions de table communes (AVEC) ;
  • prise en charge des colonnes générées

La communauté continue également de travailler sur l'extensibilité et la fiabilité de PostgreSQL, en développant la prise en charge de l'internationalisation, des capacités d'authentification et en fournissant des moyens plus simples d'administrer le système.

Cette version inclut l'implémentation d'une interface pour les moteurs de stockage enfichables, qui permet désormais aux développeurs de créer leurs propres méthodes de stockage de données.

Amélioration des performances

PostgreSQL 12 inclut des améliorations significatives en termes de performances et de maintenance pour les systèmes d'indexation et de partitionnement.

Les index B-tree, le type d'indexation standard dans PostgreSQL, ont été optimisés dans la version 12 pour les charges de travail qui impliquent des modifications fréquentes d'index. L'utilisation du benchmark TPC-C pour PostgreSQL 12 a démontré une réduction moyenne de 40 % de l'utilisation de l'espace et une augmentation globale des performances des requêtes.

Les requêtes sur les tables partitionnées ont reçu des améliorations notables, en particulier pour les tables composées de milliers de partitions qui nécessitent de travailler avec seulement des parties limitées des tableaux de données. Les performances d'ajout de données aux tables partitionnées à l'aide de INSERT et COPY ont été améliorées, ainsi que la possibilité d'attacher une nouvelle partition sans bloquer les requêtes.

PostgreSQL 12 a apporté des améliorations supplémentaires à l'indexation qui ont un impact sur les performances globales, notamment :

  • réduction des frais généraux lors de la génération de WAL pour les types d'index GiST, GIN et SP-GiST ;
  • la possibilité de créer des index dits de couverture (clause INCLUDE) sur les index GiST ;
  • la possibilité d'effectuer des requêtes « voisin le plus proche » (recherche k-NN) en utilisant l'opérateur de distance (<->) et en utilisant les index SP-GiST ;
  • prise en charge de la collecte de statistiques sur les valeurs les plus courantes (MCV) à l'aide de CREATE STATISTICS, ce qui permet d'obtenir de meilleurs plans de requête lors de l'utilisation de colonnes dont les valeurs sont inégalement réparties.

La compilation JIT à l'aide de LLVM, introduite dans PostgreSQL 11, est désormais activée par défaut. La compilation JIT améliore les performances lors de l'utilisation d'expressions dans les clauses WHERE, les listes cibles, les agrégats et certaines opérations internes. Il est disponible si vous avez compilé PostgreSQL avec LLVM ou si vous utilisez un package PostgreSQL construit avec LLVM activé.

Améliorations des capacités du langage SQL et compatibilité standard

PostgreSQL 12 a introduit la possibilité d'interroger des documents JSON à l'aide d'expressions de chemin JSON définies dans la norme SQL/JSON. De telles requêtes peuvent exploiter les mécanismes d'indexation existants pour les documents stockés au format JSONB afin de récupérer efficacement les données.

Les expressions de table courantes, également appelées requêtes AVEC, peuvent désormais être automatiquement exécutées à l'aide de la substitution dans PostgreSQL 12, ce qui peut contribuer à améliorer les performances de nombreuses requêtes existantes. Dans la nouvelle version, une partie de substitution d'une requête AVEC ne peut être exécutée que si elle n'est pas récursive, n'a aucun effet secondaire et n'est référencée qu'une seule fois dans une partie ultérieure de la requête.

PostgreSQL 12 introduit la prise en charge des « colonnes générées ». Décrit dans le standard SQL, ce type de colonne calcule une valeur en fonction du contenu des autres colonnes de la même table. Dans cette version, PostgreSQL prend en charge les « colonnes générées stockées », où la valeur calculée est stockée sur le disque.

Internationalisation

PostgreSQL 12 étend la prise en charge des classements ICU en permettant aux utilisateurs de définir des « classements non déterministes » qui peuvent, par exemple, permettre des comparaisons insensibles à la casse ou aux accents.

Authentification

PostgreSQL étend sa prise en charge des méthodes d'authentification forte avec plusieurs améliorations qui offrent une sécurité et des fonctionnalités supplémentaires. Cette version introduit le chiffrement côté client et côté serveur pour l'authentification sur les interfaces GSSAPI, ainsi que la possibilité pour PostgreSQL de découvrir les serveurs LDAP lorsque PostgreSQL est compilé avec OpenLDAP.

De plus, PostgreSQL 12 prend désormais en charge une option d'authentification multifacteur. Le serveur PostgreSQL peut désormais exiger que le client fournisse un certificat SSL valide avec le nom d'utilisateur correspondant en utilisant clientcert=verify-full, et combiner cela avec une exigence de méthode d'authentification distincte (par exemple scram-sha-256).

administration

PostgreSQL 12 a introduit la possibilité d'effectuer des reconstructions d'index non bloquantes à l'aide de la commande REINDEX CONCURRENTLY. Cela permet aux utilisateurs d'éviter les temps d'arrêt du SGBD lors de longues reconstructions d'index.

De plus, dans PostgreSQL 12, vous pouvez activer ou désactiver les sommes de contrôle de page dans un cluster arrêté à l'aide de la commande pg_checksums. Auparavant, les sommes de contrôle des pages, une fonctionnalité qui permet de vérifier l'intégrité des données stockées sur le disque, ne pouvaient être activées que lorsque le cluster PostgreSQL était initialisé à l'aide de initdb.

Source: linux.org.ru

Ajouter un commentaire