Efter ett Ärs utveckling har den nya stabila versionen av databasen PostgreSQL 14 publicerats. Uppdateringar för den nya versionen kommer att slÀppas under fem Är fram till november 2026.
Huvudsakliga nyheter:
- Stöd för Ă„tkomst av JSON-data har lagts till med uttryck som liknar arbete med matriser: SELECT (â{ «postgres»: { «release»: 14 }}â::jsonb)[âpostgresâ][âreleaseâ]; SELECT * FROM test WHERE details[âattributesâ][âsizeâ] = â»medium»â;
En liknande syntax har implementerats för nyckel/vĂ€rde-data som tillhandahĂ„lls av typen hstore. Denna syntax implementerades initialt med hjĂ€lp av ett universellt ramverk, som i framtiden kan anvĂ€ndas för andra typer. Exempel för typen hstore: INSERT INTO mytable VALUES (âa=>b, c=>dâ); SELECT h[âaâ] FROM mytable; UPDATE mytable SET h[âcâ] = ânewâ;
- Typfamiljen för att definiera intervall har utökats med nya typer av «multirange», vilket möjliggör att ange ordnade listor av icke-överlappande vĂ€rdeintervall. För varje befintlig range-typ har en motsvarande multirange-typ föreslagits, till exempel motsvarar «int4range» typen «int4multirange», och «daterange» motsvarar «datemultirange». AnvĂ€ndningen av de nya typerna förenklar skapandet av frĂ„gor som manipulerar komplexa sekvenser av intervall. SELECT â{[3,7), [8,9)}â::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
- Optimeringar har gjorts för att förbÀttra prestanda i högbelastade system som hanterar ett stort antal anslutningar. I vissa tester har en dubblerad prestanda observerats.
- Effektiviteten av B-tree-index har förbÀttrats och ett problem med indexens tillvÀxt vid frekvent uppdatering av tabeller har lösts.
- Stöd för klientbaserad pipelining (implementerat pÄ libpq-nivÄ) har lagts till, vilket möjliggör betydligt snabbare databasscenarier relaterade till utförande av ett stort antal smÄ skrivÄtgÀrder (INSERT/UPDATE/DELETE) genom att skicka nÀsta frÄga utan att vÀnta pÄ resultatet av den föregÄende. LÀge hjÀlper ocksÄ till att pÄskynda arbetet vid anslutningar med stora paketfördröjningar.
- Möjligheterna för distribuerade konfigurationer som omfattar flera servrar PostgreSQL. I den logiska replikationsimplementeringen har möjligheten att skicka transaktioner som Àr under utförande i realtid lagts till, vilket avsevÀrt ökar prestandan för replikering av stora transaktioner. Dessutom har logisk dekodering av data som kommer under logisk replikation optimerats.
- I mekanismen för anslutning av externa tabeller, Foreign Data Wrapper (postgres_fdw), har stöd för parallell behandlingsförfrÄgningar lagts till, vilket för nÀrvarande Àr tillgÀngligt endast vid anslutning till andra PostgreSQL-servrar. I postgres_fdw har Àven stöd lagts till för att lÀgga till data i externa tabeller i batchlÀge och möjligheten att importera partitionerade tabeller genom att ange direktivet 'IMPORT FOREIGN SCHEMA'.
- Optimiseringar har gjorts i genomförandet av VACUUM-operationen (skrĂ€puppsamling och packning av lagringsutrymme). En nödlĂ€gesrengöringsmetod ('emergency mode') har lagts till, som hoppar över ovĂ€sentliga rengöringsoperationer om det skapas förutsĂ€ttningar för att identifieringsnummer för transaktioner ska gĂ„ runt (transaction ID wraparound). Ăverheaden vid behandling av index i B-Tree-format har minskats. Utförandet av ANALYZE-operationen, som samlar statistik om databasens prestanda, har avsevĂ€rt accelererats.
- Möjligheten att konfigurera komprimeringsmetoden som anvÀnds i TOAST-systemet för lagring av stora data, sÄsom textblock eller geometrisk information, har lagts till. Förutom komprimeringsmetoden pglz kan LZ4-algoritmen nu anvÀndas i TOAST.
- Verktygen för övervakning av databashanteringssystemets arbete har utökats. Visningar har lagts till för att spÄra framsteg för 'COPY'-kommandon (pg_stat_progress_copy), statistik över replikationsslottar (pg_stat_replication_slots) och aktivitet kopplad till WAL-loggen för transaktioner (pg_stat_wal). Funktionen compute_query_id har lagts till, vilket inkluderar spÄrning av förfrÄgningar med tilldelning av ett unikt identifieringsnummer för varje förfrÄgan i olika delsystem, sÄsom pg_stat_activity och EXPLAIN VERBOSE.
- I planeringsverktyget för förfrÄgningar har optimeringar lagts till som förbÀttrar den parallella behandlingen av förfrÄgningar och möjliggör en ökning av prestandan vid samtidig exekvering av operationer för sekventiell genomsökning av poster, parallell körning av frÄgor i PL/pgSQL med hjÀlp av kommandot «RETURN QUERY» och parallell exekvering av frÄgor i «REFRESH MATERIALIZED VIEW». För att öka prestandan vid cykliska sammanfogningar (join) har stöd för ytterligare cachning implementerats.
- För optimering av uttryck kan nu utökad statistik anvÀndas, och för optimering av fönsterfunktioner - inkrementell sortering.
- I lagrade procedurer som tillÄter hantering av transaktioner i kodblock har stöd för att definiera returdata via parametrar «OUT» implementerats.
- Funktionen date_bin har lagts till för att avrunda vĂ€rden av typen timestamp enligt ett angivet intervall. SELECT date_bin(â15 minutesâ, TIMESTAMP â2020-02-11 15:44:17â, TIMESTAMP â2001-01-01â); 2020-02-11 15:30:00
- Uttrycken SEARCH och CYCLE, definierade av standarden SQL, har lagts till, vilket förenklar sortering och identifiering av cykler i rekursiva allmÀnna tabelluttryck (Common Table Expression, CTE). WITH 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 ) SEARCH DEPTH FIRST BY id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
- I verktyget psql har autocompletion av kommandon med tabulatortangenten förbÀttrats, i kommandot «\df» har möjligheten att visa argument för funktioner lagts till, och i kommandot «\dX» har utdata statistiken utökats.
- Möjlighet har tillhandahÄllits att ge anvÀndare privilegier som endast tillÄter lÀsning eller endast skrivning. Privilegier kan ges kopplade till specifika tabeller, vyer och scheman med hjÀlp av fördefinierade roller pg_read_all_data och pg_write_all_data. GRANT pg_read_all_data TO user1;
- I nya installationer Ă€r standardinstĂ€llningen nu att sĂ€kerstĂ€lla anvĂ€ndning av lösenordsautentisering med hjĂ€lp av metoden SCRAM-SHA-256 istĂ€llet för md5 (parametern «password_encryption» i generering av postgresql.conf stĂ€lls nu in pĂ„ vĂ€rdet âscram-sha-256â).
KĂ€lla: opennet.ru
