Le groupe de développeurs de 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 amĂ©liore significativement les performances des requĂȘtes, en particulier pour le traitement de grandes quantitĂ©s de donnĂ©es, tout en optimisant l'utilisation de l'espace disque dans son ensemble.
Parmi les nouvelles fonctionnalités :
- implĂ©mentation du langage de requĂȘtes JSON Path (une partie essentielle de la norme SQL/JSON) ;
- optimisation de l'exécution des expressions de table communes (WITH) ;
- prise en charge des colonnes générées
De plus, la communauté continue de travailler sur l'extensibilité et la fiabilité de PostgreSQL, en développant le support de l'internationalisation, des options d'authentification, et en offrant des voies d'administration de la base de données plus simples.
Cette version intÚgre l'implémentation de l'interface de moteurs de stockage connectables, permettant désormais aux développeurs de créer leurs propres méthodes de stockage des données.
Améliorations des performances
PostgreSQL 12 comprend des améliorations de performance significatives et des procédures 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 des charges qui impliquent des modifications frĂ©quentes des index. L'utilisation du test de rĂ©fĂ©rence TPC-C pour PostgreSQL 12 a montrĂ© une rĂ©duction de l'utilisation de l'espace d'environ 40 % et un gain de performance global des requĂȘtes.
Les requĂȘtes sur des tables partitionnĂ©es ont connu des amĂ©liorations notables, en particulier pour les tables composĂ©es de milliers de sections, ce qui permet de travailler uniquement avec des parties limitĂ©es des ensembles de donnĂ©es. La performance d'ajout de donnĂ©es dans des tables partitionnĂ©es a Ă©tĂ© amĂ©liorĂ©e avec INSERT et COPY, ainsi que la possibilitĂ© d'attacher une nouvelle section sans bloquer les requĂȘtes en cours.
Dans PostgreSQL 12, des améliorations supplémentaires ont été apportées à l'indexation, affectant la performance globale, notamment :
- réduction des coûts lors de la génération de WAL pour les types d'index GiST, GIN et SP-GiST ;
- possibilité de créer des dites index couvrants (covering indexes, proposition INCLUDE) sur les index GiST ;
- possibilitĂ© d'exĂ©cuter des requĂȘtes de « plus proches voisins » (k-NN search) Ă l'aide de l'opĂ©rateur de distance () et en utilisant les index SP-GiST ;
- le support de la collecte de statistiques sur les valeurs les plus courantes (most-common value, MCV) via CREATE STATISTICS, ce qui aide Ă obtenir de meilleurs plans de requĂȘte lors de l'utilisation de colonnes dont les valeurs sont inĂ©galement rĂ©parties.
La compilation JIT avec LLVM, introduite dans PostgreSQL 11, est désormais activée par défaut. La compilation JIT améliore les performances lors du traitement des expressions dans les clauses WHERE, les listes cibles, les agrégats et certaines opérations internes. Elle est disponible si vous avez compilé PostgreSQL avec LLVM ou utilisez un paquet PostgreSQL qui a été créé avec LLVM activé.
Améliorations des capacités du langage SQL et de la conformité à la norme.
PostgreSQL 12 introduit la possibilitĂ© d'exĂ©cuter des requĂȘtes sur des documents JSON Ă l'aide d'expressions de chemin JSON dĂ©finies dans la norme SQL/JSON. Ces requĂȘtes peuvent utiliser les mĂ©canismes d'indexation existants pour les documents stockĂ©s au format JSONB, permettant une extraction efficace des donnĂ©es.
Les expressions de table communes, Ă©galement connues sous le nom de requĂȘtes WITH, peuvent dĂ©sormais ĂȘtre exĂ©cutĂ©es automatiquement avec substitution dans PostgreSQL 12, ce qui peut, Ă son tour, aider Ă amĂ©liorer les performances de nombreuses requĂȘtes existantes. Dans cette nouvelle version, une partie de la requĂȘte WITH peut ĂȘtre exĂ©cutĂ©e avec substitution uniquement si elle n'est pas rĂ©cursive, n'a pas d'effets secondaires et n'est rĂ©fĂ©rencĂ©e qu'une seule fois dans la partie subsĂ©quente de la requĂȘte.
PostgreSQL 12 introduit le support des « colonnes gĂ©nĂ©rĂ©es ». DĂ©crit dans la norme SQL, ce type de colonne calcule une valeur basĂ©e sur le contenu d'autres colonnes dans 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 disque.
Internationalisation
PostgreSQL 12 élargit le support des correspondances ICU, permettant aux utilisateurs de définir des « correspondances indéterminées », qui peuvent, par exemple, permettre des comparaisons sans tenir compte de la casse ou des accents.
Authentification
PostgreSQL élargit son soutien aux méthodes d'authentification fiables avec plusieurs améliorations qui assurent une sécurité et une fonctionnalité accrues. Cette version présente le chiffrement cÎté client et cÎté serveur pour l'authentification via les interfaces GSSAPI, ainsi que la capacité de PostgreSQL à détecter. serveurs LDAP, si PostgreSQL a été compilé avec OpenLDAP.
De plus, PostgreSQL 12 prend maintenant en charge une variante de l'authentification multifacteur. DĂ©sormais, le serveur PostgreSQL peut demander au client de fournir un certificat valide. SSL-du mĂȘme nom d'utilisateur en utilisant clientcert=verify-full, et de combiner cela avec une exigence distincte pour la mĂ©thode d'authentification (par exemple, scram-sha-256).
Administration
Avec PostgreSQL 12, il est désormais possible d'effectuer un reconstruire d'index non-bloquant à l'aide de la commande REINDEX CONCURRENTLY. Cela permet aux utilisateurs d'éviter les interruptions de service de la base de données pendant de longues reconstructions d'index.
De plus, dans PostgreSQL 12, il est possible d'activer ou de dĂ©sactiver les sommes de contrĂŽle de pages dans un cluster qui est hors service, Ă l'aide de la commande pg_checksums. Auparavant, la fonction de sommes de contrĂŽle de pages â qui aide Ă vĂ©rifier l'intĂ©gritĂ© des donnĂ©es stockĂ©es sur disque â ne pouvait ĂȘtre activĂ©e qu'au moment de l'initialisation du cluster PostgreSQL avec initdb.
Source : linux.org.ru
