PostgreSQL 14 udgivelse

Efter et års udvikling er en ny stabil gren af ​​PostgreSQL 14 DBMS blevet offentliggjort. Opdateringer til den nye gren vil blive frigivet over fem år indtil november 2026.

Vigtigste innovationer:

  • Tilføjet understøttelse af adgang til JSON-data ved hjælp af array-lignende udtryk: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE detaljer['attributes']['size'] = '"medium"';

    En lignende syntaks er implementeret for nøgle/værdi-data, der leveres af hstore-typen. Denne syntaks blev oprindeligt implementeret ved hjælp af en universel ramme, som i fremtiden kan bruges til andre typer. Eksempel på hstore type: INSERT INTO mytable VALUES ('a=>b, c=>d'); VÆLG h['a'] FRA mytabel; UPDATE mytable SET h['c'] = 'ny';

  • Familien af ​​typer til at definere områder er blevet udvidet med nye "multirange" typer, som giver dig mulighed for at specificere ordnede lister over ikke-overlappende værdiområder. Ud over hver eksisterende intervaltype foreslås dens egen multirange-type, f.eks. svarer typen "int4range" til "int4multirange", og typen "daterange" svarer til "datemultirange". Brugen af ​​nye typer forenkler designet af forespørgsler, der manipulerer komplekse sekvenser af områder. VÆLG '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(antalrange(1.0, 14.0), numrange(20.0, 25.0));
  • Der er foretaget optimeringer for at forbedre ydeevnen af ​​højbelastningssystemer, der behandler et stort antal forbindelser. I nogle tests observeres en fordobling af ydeevnen.
  • Effektiviteten af ​​B-træ-indekser er blevet forbedret, og problemet med indeksvækst, når tabeller ofte opdateres, er blevet løst.
  • Tilføjet understøttelse af tilstanden på klientsiden (implementeret på libpq-niveau) for pipeline-transmission af anmodninger, som giver dig mulighed for betydeligt at fremskynde databasescenarier forbundet med at udføre et stort antal små skriveoperationer (INSERT/UPDATE/DELETE) ved at sende næste anmodning uden at vente på resultatet af den forrige. Tilstanden hjælper også med at fremskynde arbejdet på forbindelser med lange pakkeleveringsforsinkelser.
  • Forbedrede muligheder for distribuerede konfigurationer, der involverer flere PostgreSQL-servere. Implementeringen af ​​logisk replikering har nu mulighed for at sende transaktioner i gang i streaming-tilstand, hvilket kan forbedre ydeevnen for replikering af store transaktioner markant. Derudover er den logiske afkodning af data modtaget under logisk replikering blevet optimeret.
  • Foreign Data Wrapper (postgres_fdw)-mekanismen til at forbinde eksterne tabeller har tilføjet understøttelse af parallel forespørgselsbehandling, som i øjeblikket kun er anvendelig, når der oprettes forbindelse til andre PostgreSQL-servere. postgres_fdw tilføjer også understøttelse for at tilføje data til eksterne tabeller i batch-tilstand og muligheden for at importere partitionerede tabeller ved at specificere "IMPORT FOREIGN SCHEMA"-direktivet.
  • Der er foretaget optimering af implementeringen af ​​VACUUM-operationen (affaldsopsamling og pakning af disklager). En nødoprydningstilstand er blevet tilføjet, der springer ikke-essentielle oprydningsoperationer over, hvis transaktions-id-omslutningsbetingelser er oprettet. Reduceret overhead ved behandling af indekser i B-Tree-formatet. Udførelsen af ​​"ANALYSE" operationen, som indsamler statistik om driften af ​​databasen, er blevet væsentligt fremskyndet.
  • Tilføjet muligheden for at konfigurere komprimeringsmetoden, der bruges i TOAST-systemet, som er ansvarlig for lagring af store data, såsom tekstblokke eller geometrisk information. Ud over pglz-komprimeringsmetoden kan TOAST nu bruge LZ4-algoritmen.
  • Værktøjerne til at overvåge driften af ​​DBMS er blevet udvidet. Tilføjede visninger til at spore fremskridtene for COPY-kommandoer (pg_stat_progress_copy), statistik om replikeringspladser (pg_stat_replication_slots) og aktivitet relateret til WAL-transaktionsloggen (pg_stat_wal). Funktionen compute_query_id er blevet tilføjet, som gør det muligt for forskellige undersystemer, såsom pg_stat_activity og EXPLAIN VERBOSE, at spore anmodninger ved at tildele en unik identifikator for hver anmodning.
  • Optimeringer er blevet tilføjet til forespørgselsplanlæggeren for at forbedre parallel behandling af forespørgsler og forbedre ydeevnen af ​​samtidig udførelse af sekventielle registreringsscanningsoperationer, parallel udførelse af forespørgsler i PL/pgSQL ved hjælp af kommandoen "RETURN QUERY" og parallel udførelse af forespørgsler i " OPFRISK MATERIALISERET VISNING”. For at forbedre ydeevnen af ​​cykliske indlejrede fletninger (join), er understøttelse af yderligere caching blevet implementeret.
  • Avanceret statistik kan nu bruges til at optimere udtryk, og trinvis sortering kan nu bruges til at optimere vinduesfunktioner.
  • Lagrede procedurer, der giver dig mulighed for at administrere transaktioner i kodeblokke, understøtter nu at definere returdata ved hjælp af "OUT"-parametre.
  • Tilføjet date_bin-funktion til at runde tidsstempelværdier i henhold til et specificeret interval. SELECT date_bin('15 minutter', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • Tilføjet SEARCH- og CYCLE-udtryk defineret i SQL-standarden for at gøre det nemmere at bestille og identificere cyklusser i rekursive Common Table Expressions (CTE). MED RECURSIVE search_tree(id, link, data) AS ( SELECT t.id, t.link, t.data FROM tree t UNION ALL SELECT t.id, t.link, t.data FROM tree t, search_tree st WHERE t. id = st.link ) SØG DYBDE FØRST VED id SET ordercol SELECT * FRA search_tree ORDER BY ordercol;
  • I psql-værktøjet er autofuldførelsen af ​​kommandoer med faner blevet forbedret, muligheden for at vise funktionsargumenter er blevet tilføjet til kommandoen "\df", og den viste statistik er blevet udvidet til kommandoen "\dX".
  • Det er muligt at tildele skrivebeskyttede eller skrivebeskyttede rettigheder til brugere. Privilegier kan indstilles på individuelle tabeller, visninger og skemaer ved hjælp af de foruddefinerede roller pg_read_all_data og pg_write_all_data. GRANT pg_read_all_data TIL bruger1;
  • Nye installationer bruger som standard adgangskodegodkendelse ved hjælp af SCRAM-SHA-256 i stedet for md5 (parameteren "password_encryption" ved generering af postgresql.conf er nu sat til 'scram-sha-256').

Kilde: opennet.ru

Tilføj en kommentar