Efter ett Ärs utveckling har den nya stabila grenen av databashanteringssystemet PostgreSQL 17 publicerats. Uppdateringar för den nya grenen kommer att slÀppas under fem Är fram till november 2029. Stödet för PostgreSQL 12.x, den Àldsta av de stödda grenarna, avslutas den 14 november.
Huvudsakliga nyheter:
- Vid utförandet av VACUUM-operationen (skrĂ€pplockning, rengöring och packning av lagringsutrymme) har en ny datakonstruktion implementerats som anvĂ€nder upp till 20 gĂ„nger mindre minne. ĂvergĂ„ngen till den nya strukturen har möjliggjort snabbare körning av VACUUM-operationer och minskat konsumtionen av delade resurser.
- Prestandaoptimering av in- och utdata har fortsatt. Tack vare förbÀttrad kod för hantering av den fördröjda skrivloggen WAL har genomströmningen för skrivoperationer i system med mÄnga samtidiga förfrÄgningar kunnat ökas med upp till tvÄ gÄnger. Ett nytt grÀnssnitt för strömmande in- och utdata har föreslagits, vilket har ökat hastigheten för sekventiell genomgÄng av data i tabeller och accelererat uppdateringen av statistik för frÄgeplaneraren efter utförandet av ANALYZE-operationen.
- Prestandan för förfrÄgningar med uttrycket "IN" har förbÀttrats nÀr de anvÀnder index baserade pÄ B-tree-strukturen. Möjlighet till parallell indexering av BRIN (Block Range Index) har implementerats. I frÄgeplaneraren har kontroller för "NOT NULL" optimerats och behandlingen av gemensamma tabelluttryck (Common Table Expression, CTE) som definieras med SQL-kommandot "WITH" har pÄskyndats. Vektorprocessorinstruktioner (SIMD) har implementerats för att snabba upp vissa berÀkningar; till exempel har AVX-512-instruktioner anvÀnts för att snabba upp bit_count-funktionen.
- Stöd för nya funktioner för arbete med JSON-formatet, definierade i SQL/JSON-standarden, har implementerats. Funktionen JSON-TABLE har lagts till för att konvertera data frÄn JSON-formatet till vanliga PostgreSQL-tabeller, liksom nya jsonpath-operatörer för att omvandla JSON-data till inbyggda PostgreSQL-datatyper. Nya funktioner för att skapa (JSON, JSON_SCALAR och JSON_SERIALIZE) och frÄga (JSON_EXISTS, JSON_QUERY och JSON_VALUE) data i JSON-formatet har föreslagits.
- Möjligheterna för SQL-kommandot "MERGE" har utökats, vilket möjliggör skapandet av villkorliga SQL-uttryck som kombinerar operationerna INSERT, UPDATE och DELETE i ett och samma uttryck. Stöd för RETURNING-uttrycket har lagts till, vilket gör det möjligt att berÀkna och returnera vÀrden baserat pÄ tillagda, uppdaterade eller borttagna rader. Stöd för uppdatering av vyer har införts.
- Möjligheterna för uppladdning och export av data i batchlÀge har utökats. Exporthastigheten för stora rader har dubblerats i COPY-kommandot, kopieringsprocessen har optimerats nÀr kÀll- och mÄlkodningar matchar, och en ON_ERROR-alternativ har lagts till som gör det möjligt att fortsÀtta importen trots fel vid datainförsel.
- För partitionerade tabeller har möjligheten att anvÀnda kolumner med unika identifierare lagts till, samt stöd för optimeringstekniken "Constraint exclusion".
- I mekanismen för anslutning av externa tabeller Foreign Data Wrapper (postgres_fdw) har möjligheten att överföra till externa server underrubriker "EXISTS" och "IN" implementerats.
- En plattformsoberoende inbyggd motor för behandling av lokal propriétés "Collation" har implementerats, vilket anvÀnds för att ange sorteringsregler och metoder för att jÀmföra med hÀnsyn till betydelsen av symboler (t.ex. i sortering av numeriska vÀrden, beaktas minustecken och punkter före siffran samt olika skrivsÀtt, och vid jÀmförelse ignoreras skriftens register och förekomsten av betoning). Den nya motorn garanterar enhetligt beteende vid sortering av frÄgeresultat, oavsett vilken plattform PostgreSQL körs pÄ.
- I mekanismen för logisk replikation, som möjliggör överföring av förÀndringar till en annan server som görs i databasen vid tillÀgg, borttagning eller uppdatering av poster, har processen för uppdatering av DBMS förenklats. Tidigare krÀvdes det att logiska replikationsslotar tas bort och data synkroniseras om vid övergÄng till en ny betydande version, men nu kan detta göras utan att ta bort slotarna. För redundanta konfigurationer har möjligheten att hantera övergÄng till en reservserver (failover) för logisk replikation införts. En ny verktyg pg_createsubscriber har lagts till för att omvandla en fysisk replik till en ny logisk replik.
- En ny parameter "sslnegotiation" har lagts till för att möjliggöra direkt förhandling av sÀkrade TLS-anslutningar med hjÀlp av TLS-tillÀgget ALPN.
- En fördefinierad roll, pg_maintain, har implementerats som ger anvÀndaren rÀtt att utföra operationer relaterade till underhÄll av databashanteringssystemet.
- I verktyget pg_basebackup, som anvĂ€nds för att skapa sĂ€kerhetskopior av databaser, har stöd för inkrementella sĂ€kerhetskopior lagts till. För att rekonstruera en fullstĂ€ndig sĂ€kerhetskopia frĂ„n en uppsĂ€ttning inkrementella kopior har ett nytt verktyg, pg_combinebackup, föreslagits. Verktyget pg_dump har fĂ„tt alternativet "âfilter" för att vĂ€lja inkluderade objekt i dumpen.
- Vid analys av förfrÄgningar med SQL-kommandot "EXPLAIN" har det lagts till att visa tiden som spenderas pÄ att lÀsa och skriva lokala block vid in- och utdata. TvÄ nya alternativ, "MEMORY" och "SERIALIZE", har ocksÄ lagts till i "EXPLAIN"-kommandot, vilket möjliggör att bestÀmma storleken pÄ den anvÀnda minnes och den tid som spenderas pÄ att omvandla data för nÀtverksöverföring.
- Progresindikering för VACUUM-operationer med index har sÀkerstÀllts.
- Ett systemvisning pg_wait_events har lagts till, vilket tillsammans med visningen pg_stat_activity möjliggör en djupare analys av orsakerna till att aktiva sessioner befinner sig i vÀntande tillstÄnd.
KĂ€lla: opennet.ru
