Po letu razvoja je bila objavljena nova stabilna različica SDB PostgreSQL 17. Posodobitve za novo različico bodo izhajale pet let, do novembra 2029. Podpora za PostgreSQL 12.x, najstarejšo od podprtih različic, se bo končala 14. novembra.
Glavne novosti:
- Med izvajanjem operacije VACUUM (čiščenje in pakiranje diska) je bila vključena nova struktura podatkov, ki porablja do 20-krat manj pomnilnika. Prehod na novo strukturo je omogočil hitrejše izvajanje operacij VACUUM in zmanjšanje porabe skupnih virov.
- Optimizacija zmogljivosti vhodno/izhodnih operacij se nadaljuje. Z izboljšanjem kode za obdelavo dnevnika odložene zapisovanja WAL je bilo mogoče do dvakrat povečati prepustnost zapisovalnih operacij v sistemih z veliko število hkrati izvedenih poizvedb. Predlagan je nov vmesnik za toku vhod/izhod, ki je omogočil povečanje hitrosti zaporednega dostopa do podatkov v tabelah in pospešitev posodabljanja statistike za načrtovalnik poizvedb po izvedbi operacije ANALYZE.
- Zmogljivost poizvedb z izrazom 'IN' je povečana, če se pri njih uporabljajo indeksi na osnovi strukture B-tree. Izvedena je bila možnost vzporednega gradnje indeksov BRIN (Block Range Index). V načrtovalniku poizvedb so bile optimizirane preverjanja 'NOT NULL' in pospešena obdelava splošnih tabelarnih izrazov (Common Table Expression, CTE), določenih z SQL ukazom 'WITH'. Omogočena je uporaba vektorskih procesorskih navodil (SIMD) za pospešitev nekaterih izračunov, na primer so pri funkciji bit_count bila uporabljena navodila AVX-512.
- Uvedena je podpora za nove možnosti dela s formatom JSON, določenimi v standardu SQL/JSON. Dodana je funkcija JSON-TABLE za pretvorbo podatkov iz formata JSON v običajne tabele PostgreSQL, ter novi operatorji jsonpath za pretvorbo podatkov JSON v izvorne tipe podatkov PostgreSQL. Predlagane so nove funkcije za ustvarjanje (JSON, JSON_SCALAR in JSON_SERIALIZE) in poizvedovanje (JSON_EXISTS, JSON_QUERY in JSON_VALUE) podatkov v formatu JSON.
- Razširjene so možnosti SQL ukaza 'MERGE', ki omogoča ustvarjanje pogojnih SQL izrazov, ki združujejo operacije INSERT, UPDATE in DELETE v enem izraz. Dodana je podpora za izraz RETURNING, ki omogoča izračun in vračanje vrednosti na podlagi dodanih, posodobljenih ali izbrisanih vrstic. Implementirana je podpora za posodabljanje pogledov.
- Razširjene so možnosti nalaganja in izvoza podatkov v paketnem načinu. Pri ukazu COPY je bila hitrost izvoza velikih vrstic povečana do dvakrat, optimizirano je kopiranje v primeru ujemanja izvornih in ciljnih kodiranj, dodana je možnost ON_ERROR, ki omogoča nadaljevanje uvoza po napakah pri vstavitvi podatkov.
- Za particionirane tabele je bila dodana možnost uporabe stolpcev z edinstvenimi identifikatorji in podpora tehniki optimizacije poizvedb 'Constraint exclusion'.
- V mehanizmu povezovanja zunanjih tabel Foreign Data Wrapper (postgres_fdw) je bila implementirana možnost prenosa na zunanji strežnik podpoizvedb 'EXISTS' in 'IN'.
- Implementiran je vgrajen platformno neodvisen mehanizem za obdelavo lastnosti lokalizacije 'Collation', ki se uporablja za določanje pravil sortiranja in metod ujemanja ob upoštevanju pomena simbolov (na primer, pri sortiranju številčnih vrednosti se upošteva prisotnost minus in pika pred številom ter različne oblike zapisovanja, pri primerjanju pa se ne upošteva velikost črk in prisotnost naglasa). Nov mehanizem zagotavlja enotno obnašanje pri sortiranju rezultatov poizvedb, kar ni odvisno od tega, na kateri platformi se PostgreSQL izvaja.
- V mehanizmu logične replikacije, ki omogoča prenos sprememb v drugo strežnik, ki nastanejo med dodajanjem, brisanjem ali posodabljanjem zapisov, je bil poenostavljen postopek posodabljanja DBMS. Če je bilo prej potrebno pri prehodu na novo večjo različico odstraniti replikacijske reže in ponovno sinhronizirati podatke, je zdaj možno to doseči brez odstranjevanja rež. Za visokotrajne konfiguracije je bila implementirana možnost upravljanja preklopa na rezervni strežnik (failover) za logično replikacijo. Dodana je nova uporabniška orodja pg_createsubscriber za pretvorbo fizične replikacije v novo logično replikacijo.
- Dodana nova opcija «sslnegotiation» za izravno usklađivanje zaštićenih TLS veze koristeći TLS proširenje ALPN.
- Implementirana je unaprijed definirana uloga pg_maintain, koja korisniku daje pravo na izvođenje operacija povezanih s održavanjem DBMS-a.
- U alat pg_basebackup, korišten za izradu sigurnosnih kopija baze podataka, dodana je podrška za inkrementalne sigurnosne kopije. Za rekonstrukciju pune sigurnosne kopije iz seta inkrementalnih kopija predloženi su novi alati pg_combinebacku. U alat pg_dump dodana je opcija «—filter» za odabir objekata koji se uključuju u dump.
- Prilikom analize upita pomoću SQL naredbe «EXPLAIN» implementirano je prikazivanje vremena utrošenog za čitanje i pisanje lokalnih blokova pri unosu/izlazu. U naredbu «EXPLAIN» također su dodane dvije nove opcije «MEMORY» i «SERIALIZE», pomoću kojih se može odrediti veličina korištene memorije i vrijeme utrošeno na pretvorbu podataka za prenos preko mreže.
- Osigurano je označavanje napretka tijekom izvođenja operacije VACUUM s indeksima.
- Dodano je sistemsko predstavljanje pg_wait_events, koje u kombinaciji s prikazom pg_stat_activity omogućava detaljnije proučavanje uzroka zbog kojih se aktivne sesije nalaze u stanju čekanja.
Izvor: opennet.ru
