programmatūra · 5 min · 18.07.2026

PostgreSQL 19 Beta 2 klāt: autovacuum tagad strādā paralēli, un REPACK pārbūvē tabulu bez bloķēšanas

16. jūlijā iznāca PostgreSQL 19 Beta 2 — otrā testa versija pirms rudens galarelīzes. Lielās izmaiņas atnāca jau ar Beta 1 (4. jūnijs), un Beta 2 galvenokārt lāpa: 14 labojumi, tostarp REPACK darbinieka process, kas pēc FATAL kļūdas palika karājoties, un vairākas kļūdas jaunajā FOR PORTION OF sintaksē. Galaversija sagaidāma septembrī vai oktobrī.

Šī ir versija, kur autovacuum beidzot iemācās strādāt vairākos procesos vienlaikus, un kur tabulu var pārbūvēt bez tabulas bloķēšanas. Zemāk — kas mainās izstrādātājam un datubāzes administratoram.

Autovacuum tagad strādā paralēli

Līdz šim viens autovacuum darbinieks apstrādāja vienu tabulu vienā procesā. Uz lielām tabulām ar daudziem indeksiem tas nozīmēja garas, lēnas tīrīšanas, kas atpalika no ierakstu tempa. PostgreSQL 19 ievieš iestatījumu autovacuum_max_parallel_workers, un tagad autovacuum var sadalīt indeksu tīrīšanu starp vairākiem procesiem — tāpat, kā to jau prot manuālā VACUUM (PARALLEL) komanda.

Klāt nāk arī jauna prioritāšu sistēma. Autovacuum piešķir tabulām punktu skaitu un ķeras vispirms pie tām, kur tīrīšana visvairāk aizkavējusies, nevis apstrādā tās vienkārši pēc kārtas. Beta 2 pa ceļam salaboja multixact vecuma aprēķinu šajā punktu sistēmā.

REPACK pārbūvē tabulu bez bloķēšanas

Sablīvēta tabula ar daudz mirušām rindām līdz šim bija jāpārbūvē ar VACUUM FULL, kas uzliek ekskluzīvu slēdzeni un aptur visus vaicājumus, vai ar ārējo rīku pg_repack. PostgreSQL 19 iebūvē komandu REPACK ar opciju CONCURRENTLY, kas pārbūvē tabulu, kamēr tā turpina apkalpot lasīšanu un rakstīšanu.

Divi ilggadēji sāpju punkti — lēnā tīrīšana un bloķējošā pārbūve — šajā versijā tiek risināti tieši kodolā, nevis ar papildu spraudņiem.

Partīciju pārvaldībai pievienotas ALTER TABLE ... MERGE PARTITIONS un SPLIT PARTITIONS, tā ka partīciju var sadalīt vai apvienot uz vietas, bez datu manuālas pārvietošanas.

Ātrāki ieraksti un asinhronais I/O

Ieraksti tabulās ar ārējo atslēgu pārbaudēm strādā līdz divreiz ātrāk — pārbaude vairs neatkārto to pašu darbu katrai rindai atsevišķi. Plānotājs iemācījies plašāk lietot inkrementālo kārtošanu, agrīno agregāciju un ātrākus paralēlos secīgos skenējumus.

Asinhronais I/O apakšsistēma, kas parādījās PostgreSQL 18, tagad pati regulē darbinieku skaitu. Ar io_method=worker procesu skaits mainās starp jaunajiem io_min_workers un io_max_workers ietvariem atkarībā no slodzes. Kā šie darbinieki uzvedas konkrētā vaicājumā, tagad var redzēt EXPLAIN ANALYZE izvadē caur opciju IO.

Divas noklusējuma izmaiņas ir pelnījušas uzmanību pirms jaunināšanas: JIT kompilācija tagad ir izslēgta pēc noklusējuma, un default_toast_compression pārgājis uz lz4 iepriekšējā pglz vietā.

Grafu vaicājumi ar SQL/PGQ

PostgreSQL 19 ievieš SQL/PGQ — SQL standarta sintaksi īpašību grafu vaicājumiem. Datus, kas glabājas parastās relāciju tabulās, tagad var apskatīt kā virsotnes un šķautnes un rakstīt gājienu meklējumus tieši SQL, bez atsevišķas grafu datubāzes. InfoQ raksta, ka šī ir pirmā lielā SQL standarta grafu daļas ieviešana plaši lietotā atvērtā koda datubāzē. Funkcija ir svaiga, un Beta 2 pievieno tai vairākus labojumus.

Laika tabulas un citi SQL sīkumi

Temporālais atbalsts, kas Postgres 18 ļāva definēt laika ierobežojumus, tagad turpinās ar FOR PORTION OF atbalstu komandām UPDATE un DELETE. Rindu, kas ir spēkā noteiktā laika posmā, var izmainīt vai izdzēst tikai daļēji, un datubāze pati sagriež ierakstu pa laika robežām.

No pārējā, ko izstrādātāji sagaidījuši gadiem:

  • GROUP BY ALL — grupē pēc visām izvades kolonnām, kas nav agregāti, bez to uzskaitīšanas ar roku;
  • INSERT ... ON CONFLICT DO SELECT ... RETURNING — atgriež rindas, kas izraisīja konfliktu;
  • WAIT FOR LSN — ļauj replikā nolasīt paša tikko ierakstītos datus;
  • loģiskā replikācija tagad pārsūta arī sekvenču vērtības, kas vienkāršo bezdīkstāves jaunināšanu;
  • random() tagad ģenerē arī date un timestamp vērtības — noderīgi testa datiem.

Novērošanai klāt nākuši pg_stat_lock ar statistiku pa slēdzeņu tipiem un pg_stat_recovery atkopšanas operāciju redzamībai.

Ko pārbaudīt pirms galaversijas

PostgreSQL komanda aicina testēt, bet nebrīdina lietot Beta produkcijā. Divas noklusējuma maiņas — izslēgtais JIT un lz4 TOAST saspiešana — var mainīt gan vaicājumu laikus, gan diska patēriņu, tāpēc tās vērts pārmērīt uz savas slodzes. Atvērto jautājumu saraksts ir PostgreSQL wiki. Beta 2 aizstāja Beta 1, un pirms galaversijas gaidāmas vēl vismaz viena vai vairākas laidiena kandidātes.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no programmatūrasaistītie