PostgreSQL izstrādes komanda 16. jūlijā izlaida PostgreSQL 19 Beta 2 un līdz ar to iesaldēja jaunās versijas funkciju sarakstu. Tas nozīmē, ka nekas jauns 19. laidienā vairs neienāks — atlikušais laiks iet stabilitātei un kļūdu labošanai. Pirmais pilnais laidiens plānots septembrī vai oktobrī.
Pēc Beta 1, kas iznāca 4. jūnijā, saraksts ir skaidrs. Trīs izmaiņas izceļas: grafu vaicājumi tieši datubāzē pēc SQL/PGQ standarta, jaunā komanda REPACK, kas pārkārto tabulu bez ilgas bloķēšanas, un divi pārslēgti noklusējumi, kas skars katru, kurš atjauninās savu instalāciju.
Grafu vaicājumi tieši datubāzē
PostgreSQL 19 pievieno SQL/PGQ atbalstu — tā ir SQL standarta daļa īpašību grafu (property graph) vaicājumiem. Līdz šim, lai datus apstrādātu kā grafu — mezgli un savienojumi starp tiem —, vajadzēja vai nu atsevišķu grafu datubāzi, vai rakstīt rekursīvus CTE ar rokām. Tagad virs esošajām tabulām var definēt īpašību grafu ar CREATE PROPERTY GRAPH un vaicāt to, negatavojot datus no jauna.
Pašu vaicājumu raksta ar GRAPH_TABLE un ceļa rakstu, piemēram, sameklēt visus, kuriem seko konkrēts lietotājs: rakstā apraksta mezglu tipus un šķautni starp tiem, un datubāze atgriež rindas kā parastu tabulu, ko var savienot ar pārējo vaicājumu. Detaļas aprakstītas dokumentācijas sadaļā par īpašību grafiem. Beta 2 šai funkcijai jau izlaboja vairākas kļūdas, tāpēc tā vēl mainās līdz laidienam.
REPACK pārkārto tabulu, kamēr tā strādā
Otrs lielais jaunums ir REPACK komanda ar CONCURRENTLY opciju. Tabulas fizisko pārkārtošanu — lai atgūtu diska vietu pēc daudzām dzēšanām vai atjauninājumiem — līdz šim darīja ar VACUUM FULL vai CLUSTER. Abas paņem ekskluzīvu slēdzeni, un tabula šajā laikā nav pieejama ne lasīšanai, ne rakstīšanai. REPACK CONCURRENTLY strādā fonā, un lietotnes vaicājumi tabulu turpina lietot visu procesa laiku.
Beta 2 šeit jau ienesa labojumu: iepriekš REPACK darba process netika notīrīts, ja tas beidzās ar FATAL kļūdu. Tagad tas ir salabots.
Paralēlais autovacuum un jauna prioritāšu sistēma
Autovacuum tagad drīkst vienai tabulai izmantot vairākus darba procesus. To regulē jauns parametrs autovacuum_max_parallel_workers. Klāt arī jauna vērtēšanas sistēma, kas sarindo tabulas pēc tā, cik steidzami tās vajag apstrādāt, un vaicājumu izpildes laikā lapas atzīmē kā redzamas, tādēļ nākamajam autovacuum darba paliek mazāk. Beta 2 izlaboja kļūdu, kur multixact vecuma rezultāts dažos gadījumos aprēķinājās kā bezgalīgs.
Divi noklusējumi, kas mainās migrējot
Divas izmaiņas skars ikvienu, kas pāries uz 19. versiju:
default_toast_compressiontagad irlz4, nevis vecaispglz. LZ4 lieliem laukiem saspiež un atspiež ātrāk.- JIT kompilācija tagad ir izslēgta pēc noklusējuma. Iepriekš tā bija ieslēgta, un dažiem vaicājumiem tā deva vairāk pieskaitāmo izmaksu nekā ieguvuma. Kam JIT palīdz, to var ieslēgt atpakaļ ar
jit = on.
Migrācijas plānā šos divus jāņem vērā atsevišķi, jo tie maina uzvedību klusi, bez kļūdas paziņojuma.
Beta versijas nav paredzētas ražošanas videi. PostgreSQL projekts aicina testēt tipiskās lietotņu slodzes testa serverī un ziņot par atrastajām kļūdām, lai laidiens iznāktu stabils.
Loģiskā replikācija bez pārstartēšanas
Loģisko replikāciju tagad var ieslēgt bez servera pārstartēšanas, ja wal_level ir uzstādīts uz replica. Jauns tikai lasāms parametrs effective_wal_level parāda pašreizējo WAL līmeni. Klāt arī jauna sintakse CREATE PUBLICATION ... EXCEPT, kas publicē visas tabulas, izņemot nosauktās, un loģiskā replikācija tagad pārnes arī sekvenču vērtības. Pēdējais vienkāršo datubāzes atjaunošanu no vienas versijas uz nākamo bez dīkstāves.
Plānotājs un uzraudzība
Vaicājumu plānotājs 19. versijā dabū vairākus konkrētus uzlabojumus: labākas anti-join optimizācijas, plašāku inkrementālo kārtošanu, agrīno agregāciju un ātrāku paralēlo secīgo skenēšanu. Ievietošana ar ārējo atslēgu pārbaudi strādā līdz divreiz ātrāk nekā 18. versijā. Uzraudzībai klāt divi jauni skati — pg_stat_lock un pg_stat_recovery —, un komanda WAIT FOR LSN ļauj replikai nogaidīt konkrētu ieraksta punktu, pirms tā atbild uz lasījumu. Tas atrisina gadījumu, kad lietotne raksta uz galveno serveri un tūlīt pēc tam lasa no replikas, bet dati vēl nav paspējuši atceļot.
Papildus tam ir vēl vairāki mazāki uzlabojumi: kontrolsummas var ieslēgt un izslēgt bez pārstartēšanas, ir jauna GROUP BY ALL sintakse, un temporālajās tabulās FOR PORTION OF tagad strādā arī ar UPDATE un DELETE, ne tikai ar ierobežojumiem. Beta 2 šai sintaksei izlaboja vairākas kļūdas.
Kopš Beta 1 saraksts vairs neaug, tāpēc administratoriem tagad ir laiks pārbaudīt savas lietotnes pret 19. versiju, kamēr līdz rudens laidienam vēl ir vieta ziņot par problēmām. Projekts pēc vajadzības izlaidīs vēl beta versijas, tad vienu vai vairākus laidiena kandidātus, un tikai pēc tam pilno versiju. Beta 2 labojumu sarakstā ir arī atgriezti pg_dumpall ne-teksta izvades formāti, salabota ALTER DOMAIN ... VALIDATE CONSTRAINT slēgšana un aizliegtas negatīvas max_retention_duration vērtības.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.