Po metų kūrimo buvo paskelbta nauja stabili PostgreSQL 17 DBMS atšaka. Naujos šakos naujiniai bus išleisti per penkerius metus iki 2029 m. lapkričio mėn. „PostgreSQL 12.x“, seniausia palaikoma šaka, baigsis lapkričio 14 d.
Pagrindinės naujovės:
- Atliekant VACUUM operaciją (šiukšlių surinkimas, disko saugyklos valymas ir pakavimas) naudojama nauja duomenų struktūra, sunaudojanti iki 20 kartų mažiau atminties. Perėjimas prie naujos struktūros leido VACUUM operacijoms vykdyti greičiau ir sumažinti bendrų išteklių suvartojimą.
- Nuolatinis I/O našumo optimizavimas. WAL tingaus rašymo žurnalų tvarkymo kodo patobulinimai padidino rašymo pralaidumą iki dviejų kartų sistemose su daugybe vienu metu atliekamų užklausų. Siūloma nauja srautinio įvesties/išvesties sąsaja, kuri padidins nuoseklios duomenų paieškos lentelėse greitį ir pagreitins statistikos atnaujinimą užklausų planuotojui, atlikus ANALIZĖS operaciją.
- Pagerintas IN užklausų našumas, kai jos naudoja B-medžio indeksus. Įdiegta lygiagrečios BRIN (Block Range Index) indeksų konstravimo galimybė. Užklausų planavimo priemonė optimizavo „NOT NULL“ patikras ir pagreitino bendrųjų lentelės išraiškų (CTE) apdorojimą, apibrėžtą naudojant SQL komandą „WITH“. Norint paspartinti kai kuriuos skaičiavimus, naudojamos vektorinio procesoriaus instrukcijos (SIMD), pavyzdžiui, AVX-512 instrukcijos naudojamos bit_count funkcijai paspartinti.
- Įdiegtas naujų funkcijų, skirtų darbui su JSON formatu, apibrėžtu SQL/JSON standarte, palaikymas. Pridėta JSON-TABLE funkcija, skirta JSON duomenims konvertuoti į įprastas PostgreSQL lenteles, taip pat nauji jsonpath operatoriai, konvertuojantys JSON duomenis į vietinius PostgreSQL duomenų tipus. Pasiūlytos naujos funkcijos, skirtos duomenims JSON formatu kurti (JSON, JSON_SCALAR ir JSON_SERIALIZE) ir užklausoms teikti (JSON_EXISTS, JSON_QUERY ir JSON_VALUE).
- Buvo išplėstos SQL komandos „MERGE“ galimybės, leidžiančios sukurti sąlygines SQL išraiškas, kurios vienoje išraiškoje sujungia INSERT, UPDATE ir DELETE operacijas. Pridėta išraiškos RETURNING palaikymas, leidžiantis apskaičiuoti ir grąžinti reikšmes pagal pridėtas, atnaujintas arba ištrintas eilutes. Buvo įdiegtas rodinių atnaujinimo palaikymas.
- Buvo išplėstos duomenų įkėlimo ir eksportavimo paketiniu režimu galimybės. Komandoje COPY iki dviejų kartų padidintas didelių eilučių eksportavimo greitis, optimizuotas kopijavimas, kai sutampa šaltinio ir tikslinės koduotės, pridėta parinktis ON_ERROR, kuri leidžia tęsti importavimą po klaidų įterpiant duomenis. .
- Suskaidytoms lentelėms buvo pridėta galimybė naudoti stulpelius su unikaliais identifikatoriais ir užklausų optimizavimo „Apribojimų išskyrimas“ palaikymas.
- В механизме подключения внешних таблиц Foreign Data Wrapper (postgres_fdw) реализована возможность передачи на внешний serverio подзапросов «EXISTS» и «IN.
- Buvo įdiegtas integruotas nuo platformos nepriklausomas variklis, skirtas apdoroti lokalės „Colation“ savybes, naudojamas rūšiavimo taisyklėms ir derinimo metodams nustatyti, atsižvelgiant į simbolių reikšmę (pavyzdžiui, rūšiuojant skaitmenines reikšmes, atsižvelgiama į minusą ir tašką prieš skaičių ir skirtingus rašybos būdus, tačiau lyginant neatsižvelgiama į simbolių atvejį ir kirčio buvimą). Naujasis variklis garantuoja vienodą elgesį rūšiuojant užklausos rezultatus, neatsižvelgiant į tai, kurioje platformoje veikia PostgreSQL.
- Loginis replikacijos mechanizmas, leidžiantis duomenų bazėje padarytus pakeitimus pridedant, naikinant ar atnaujinant įrašus išversti į kitą serverį, supaprastina DBVS atnaujinimo procesą. Anksčiau migruojant į naują pagrindinį leidimą tekdavo pašalinti loginio replikacijos lizdus ir iš naujo sinchronizuoti duomenis, dabar galima išsiversti ir neištrynus lizdų. Gedimams atspariose konfigūracijose įdiegta galimybė valdyti perjungimą į atsarginį serverį (perjungimą) loginiam replikavimui. Pridėta nauja pg_createsubscriber priemonė, skirta konvertuoti fizinę kopiją į naują loginę kopiją.
- Pridėta nauja „sslnegotiation“ parinktis, skirta tiesiogiai derėtis dėl saugių TLS jungčių naudojant ALPN TLS plėtinį.
- Įdiegtas iš anksto nustatytas vaidmuo pg_maintain, suteikiantis vartotojui teisę atlikti su DBVS priežiūra susijusias operacijas.
- Prie pg_basebackup įrankio, naudojamo duomenų bazės atsarginėms kopijoms kurti, buvo pridėtas laipsniškų atsarginių kopijų kūrimo palaikymas. Norint atkurti visą atsarginę kopiją iš laipsniškų kopijų rinkinio, buvo pasiūlyta nauja programa pg_combinebacku. Parinktis „--filter“ buvo pridėta prie pg_dump įrankio, kad būtų galima pasirinkti objektus, kurie bus įtraukti į iškeltą.
- Analizuojant užklausas naudojant „EXPLAIN“ SQL komandą, rodomas laikas, praleistas skaitant ir rašant vietinius blokus I/O metu. Komanda EXPLAIN taip pat prideda dvi naujas parinktis – MEMORY ir SERIALIZE, kurios leidžia nustatyti naudojamos atminties kiekį ir laiką, sugaištą konvertuojant duomenis perdavimui tinkle.
- Nurodo VACUUM operacijos eigą su indeksais.
- Pridėtas sistemos rodinys pg_wait_events, kuris kartu su pg_stat_activity rodiniu leidžia išsiaiškinti, kodėl aktyvios sesijos yra laukiančios būsenos.
Šaltinis: opennet.ru
