PostgreSQL 14 DBMS release

Efter ett års utveckling har en ny stabil gren av PostgreSQL 14 DBMS publicerats. Uppdateringar för den nya grenen kommer att släppas under fem år fram till november 2026.

Huvudsakliga innovationer:

  • Lade till stöd för åtkomst till JSON-data med arrayliknande uttryck: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE detaljer['attributes']['size'] = '"medium"';

    En liknande syntax implementeras för nyckel/värdedata som tillhandahålls av hstore-typen. Denna syntax implementerades initialt med hjälp av ett universellt ramverk, som i framtiden kan användas för andra typer. Exempel för hstore-typ: INSERT INTO mytable VALUES ('a=>b, c=>d'); VÄLJ h['a'] FRÅN mytable; UPPDATERA mytable SET h['c'] = 'ny';

  • Typfamiljen för att definiera intervall har utökats med nya "multirange"-typer, som låter dig specificera ordnade listor med icke-överlappande värdeintervall. Utöver varje befintlig intervalltyp föreslås en egen multiintervalltyp, till exempel motsvarar typen "int4range" "int4multirange", och typen "daterange" motsvarar "datemultirange". Användningen av nya typer förenklar designen av frågor som manipulerar komplexa sekvenser av intervall. VÄLJ '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Optimering har gjorts för att förbättra prestandan hos högbelastningssystem som bearbetar ett stort antal anslutningar. I vissa tester observeras en tvåfaldig ökning av prestanda.
  • Effektiviteten för B-trädsindex har förbättrats och problemet med indextillväxt när tabeller uppdateras ofta har lösts.
  • Tillagt stöd för läget på klientsidan (implementerat på libpq-nivå) för pipelineöverföring av förfrågningar, vilket gör att du avsevärt kan snabba upp databasscenarier som är associerade med att utföra ett stort antal små skrivoperationer (INSERT/UPDATE/DELETE) genom att skicka nästa begäran utan att vänta på resultatet av den föregående. Läget hjälper också att påskynda arbetet med anslutningar med långa paketleveransförseningar.
  • Förbättrade funktioner för distribuerade konfigurationer som involverar flera PostgreSQL-servrar. Vid implementering av logisk replikering blir det nu möjligt att skicka pågående transaktioner i streaming-läge, vilket avsevärt kan förbättra replikeringsprestanda för stora transaktioner. Dessutom har den logiska avkodningen av data som tas emot under logisk replikering optimerats.
  • Mekanismen för att ansluta externa tabeller Foreign Data Wrapper (postgres_fdw) har lagt till stöd för parallell frågebehandling, vilket för närvarande endast är tillämpligt vid anslutning till andra PostgreSQL-servrar. postgres_fdw lägger också till stöd för att lägga till data till externa tabeller i batchläge och möjligheten att importera partitionerade tabeller genom att specificera "IMPORT FOREIGN SCHEMA"-direktivet.
  • Optimering har gjorts för implementeringen av VACUUM-operationen (sopsamling och paketering av disklagring). Ett nödrensningsläge har lagts till som hoppar över icke-nödvändiga saneringsåtgärder om transaktions-ID-omslutningsvillkor skapas. Minskad omkostnad vid bearbetning av index i B-Tree-formatet. Exekveringen av operationen "ANALYSE", som samlar in statistik om hur databasen fungerar, har påskyndats avsevärt.
  • Lade till möjligheten att konfigurera komprimeringsmetoden som används i TOAST-systemet, som ansvarar för att lagra stora data, såsom textblock eller geometrisk information. Förutom pglz-komprimeringsmetoden kan TOAST nu använda LZ4-algoritmen.
  • Verktygen för att övervaka driften av DBMS har utökats. Lade till vyer för att spåra förloppet för COPY-kommandon (pg_stat_progress_copy), statistik om replikeringsplatser (pg_stat_replication_slots) och aktivitet relaterad till WAL-transaktionsloggen (pg_stat_wal). Funktionen compute_query_id har lagts till, vilket gör att olika delsystem, såsom pg_stat_activity och EXPLAIN VERBOSE, kan spåra förfrågningar genom att tilldela en unik identifierare för varje begäran.
  • Optimering har lagts till i frågeplaneraren för att förbättra parallell bearbetning av frågor och förbättra prestandan för simultan exekvering av sekventiella postskanningsoperationer, parallell exekvering av frågor i PL/pgSQL med hjälp av kommandot "RETURN QUERY" och parallell exekvering av frågor i " UPPDATERA MATERIALISERAD VY”. För att förbättra prestandan för cykliska kapslade sammanslagningar (join) har stöd för ytterligare cachning implementerats.
  • Avancerad statistik kan nu användas för att optimera uttryck, och inkrementell sortering kan nu användas för att optimera fönsterfunktioner.
  • Lagrade procedurer som låter dig hantera transaktioner i kodblock stöder nu att specificera returdata med "OUT"-parametrar.
  • Lade till date_bin-funktion för att runda tidsstämpelvärden enligt ett specificerat intervall. SELECT date_bin('15 minuter', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • Lade till SEARCH- och CYCLE-uttryck definierade i SQL-standarden för att göra det lättare att beställa och identifiera cykler i rekursiva Common Table Expressions (CTE). MED REKURSIVT sökträd(id, länk, data) AS ( VÄLJ t.id, t.länk, t.data FRÅN träd t UNION ALLA VÄLJ t.id, t.länk, t.data FRÅN träd t, sökträd st WHERE t. id = st.link ) SÖKDJUP FÖRST MED ID SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • I verktyget psql har autokompletteringen av kommandon med flikar förbättrats, möjligheten att visa funktionsargument har lagts till i kommandot "\df" och den visade statistiken har utökats till kommandot "\dX".
  • Det är möjligt att tilldela skrivskyddad eller skrivskyddad behörighet till användare. Behörigheter kan ställas in på enskilda tabeller, vyer och scheman med hjälp av de fördefinierade rollerna pg_read_all_data och pg_write_all_data. GRANT pg_read_all_data TILL användare1;
  • Nya installationer använder som standard lösenordsautentisering med SCRAM-SHA-256 istället för md5 (parametern "password_encryption" när postgresql.conf genereras är nu inställd på 'scram-sha-256').

Källa: opennet.ru

Lägg en kommentar