Version du SGBD PostgreSQL 14

Après un an de développement, une nouvelle branche stable du SGBD PostgreSQL 14 a été publiée. Les mises à jour pour la nouvelle branche seront publiées sur cinq ans jusqu'en novembre 2026.

Principales nouveautés :

  • Ajout de la prise en charge de l'accès aux données JSON à l'aide d'expressions de type tableau : SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE détails['attributes']['size'] = '"medium"';

    Une syntaxe similaire est implémentée pour les données clé/valeur fournies par le type hstore. Cette syntaxe a été initialement implémentée à l’aide d’un framework universel, qui pourra à l’avenir être utilisé pour d’autres types. Exemple pour le type hstore : INSERT INTO mytable VALUES ('a=>b, c=>d'); SELECT h['a'] FROM matable; UPDATE ma table SET h['c'] = 'nouveau';

  • La famille de types permettant de définir des plages a été élargie avec de nouveaux types « multiplages », qui vous permettent de spécifier des listes ordonnées de plages de valeurs qui ne se chevauchent pas. En plus de chaque type de plage existant, son propre type multirange est proposé, par exemple, le type « int4range » correspond à « int4multirange », et le type « daterange » correspond à « datemultirange ». L'utilisation de nouveaux types simplifie la conception de requêtes qui manipulent des séquences complexes de plages. SELECT '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Des optimisations ont été apportées pour améliorer les performances des systèmes à forte charge traitant un grand nombre de connexions. Dans certains tests, on observe une multiplication par deux des performances.
  • L'efficacité des index B-tree a été améliorée et le problème de croissance des index lorsque les tables sont fréquemment mises à jour a été résolu.
  • Ajout de la prise en charge du mode de transmission pipeline des requêtes côté client (implémenté au niveau libpq), ce qui vous permet d'accélérer considérablement les scénarios de base de données associés à l'exécution d'un grand nombre de petites opérations d'écriture (INSERT/UPDATE/DELETE) en envoyant le requête suivante sans attendre le résultat de la précédente. Ce mode permet également d'accélérer le travail sur les connexions présentant de longs délais de livraison des paquets.
  • Capacités améliorées pour les configurations distribuées impliquant plusieurs serveurs PostgreSQL. Dans la mise en œuvre de la réplication logique, il devient désormais possible d'envoyer en mode streaming des transactions en cours d'exécution, ce qui peut améliorer considérablement les performances de réplication des transactions volumineuses. De plus, le décodage logique des données reçues lors de la réplication logique a été optimisé.
  • Le mécanisme de connexion de tables externes Foreign Data Wrapper (postgres_fdw) a ajouté la prise en charge du traitement des requêtes parallèles, qui n'est actuellement applicable que lors de la connexion à d'autres serveurs PostgreSQL. postgres_fdw ajoute également la prise en charge de l'ajout de données à des tables externes en mode batch et la possibilité d'importer des tables partitionnées en spécifiant la directive « IMPORT FOREIGN SCHEMA ».
  • Des optimisations ont été apportées à la mise en œuvre de l'opération VACUUM (garbage collection et packaging du stockage sur disque). Un mode de nettoyage d'urgence a été ajouté qui ignore les opérations de nettoyage non essentielles si des conditions de bouclage de l'ID de transaction sont créées. Réduction des frais généraux lors du traitement des index au format B-Tree. L'exécution de l'opération « ANALYZE », qui collecte des statistiques sur le fonctionnement de la base de données, a été considérablement accélérée.
  • Ajout de la possibilité de configurer la méthode de compression utilisée dans le système TOAST, qui est responsable du stockage de données volumineuses, telles que des blocs de texte ou des informations géométriques. En plus de la méthode de compression pglz, TOAST peut désormais utiliser l'algorithme LZ4.
  • Les outils de suivi du fonctionnement du SGBD ont été élargis. Ajout de vues pour suivre la progression des commandes COPY (pg_stat_progress_copy), des statistiques sur les emplacements de réplication (pg_stat_replication_slots) et l'activité liée au journal des transactions WAL (pg_stat_wal). La fonction calculate_query_id a été ajoutée, qui permet à divers sous-systèmes, tels que pg_stat_activity et EXPLAIN VERBOSE, de suivre les requêtes en attribuant un identifiant unique à chaque requête.
  • Des optimisations ont été ajoutées au planificateur de requêtes pour améliorer le traitement parallèle des requêtes et améliorer les performances d'exécution simultanée des opérations d'analyse séquentielle des enregistrements, l'exécution parallèle des requêtes dans PL/pgSQL à l'aide de la commande « RETURN QUERY » et l'exécution parallèle des requêtes dans « RAFRAÎCHIR LA VUE MATÉRIALISÉE ». Pour améliorer les performances des fusions imbriquées cycliques (jointure), la prise en charge d'une mise en cache supplémentaire a été implémentée.
  • Les statistiques avancées peuvent désormais être utilisées pour optimiser les expressions, et le tri incrémentiel peut désormais être utilisé pour optimiser les fonctions des fenêtres.
  • Les procédures stockées qui permettent de gérer les transactions par blocs de code prennent désormais en charge la définition des données de retour à l'aide des paramètres "OUT".
  • Ajout de la fonction date_bin pour arrondir les valeurs d'horodatage selon un intervalle spécifié. SELECT date_bin('15 minutes', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • Ajout des expressions SEARCH et CYCLE définies dans la norme SQL pour faciliter l'ordre et l'identification des cycles dans les expressions de table communes (CTE) récursives. AVEC RECURSIVE search_tree(id, link, data) AS ( SELECT t.id, t.link, t.data FROM arbre t UNION ALL SELECT t.id, t.link, t.data FROM arbre t, search_tree st OÙ t. id = st.link ) RECHERCHEZ LA PROFONDEUR D'ABORD PAR id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • Dans l'utilitaire psql, l'auto-complétion des commandes avec des onglets a été améliorée, la possibilité d'afficher les arguments de fonction a été ajoutée à la commande « \df » et les statistiques affichées ont été étendues à la commande « \dX ».
  • Il est possible d'attribuer des privilèges de lecture seule ou d'écriture seule aux utilisateurs. Les privilèges peuvent être définis sur des tables, vues et schémas individuels à l'aide des rôles prédéfinis pg_read_all_data et pg_write_all_data. GRANT pg_read_all_data À utilisateur1 ;
  • Les nouvelles installations utilisent par défaut l'authentification par mot de passe en utilisant SCRAM-SHA-256 au lieu de md5 (le paramètre "password_encryption" lors de la génération de postgresql.conf est désormais défini sur "scram-sha-256").

Source: opennet.ru

Ajouter un commentaire