PostgreSQL 14 DBMS izdanje

Nakon godinu dana razvoja, objavljena je nova stabilna grana DBMS-a PostgreSQL 14. Ažuriranja za novu granu bit će objavljena tijekom pet godina do studenog 2026.

Glavne inovacije:

  • Dodana podrška za pristup JSON podacima pomoću izraza sličnih nizu: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE details['attributes']['size'] = '"medium"';

    Slična sintaksa implementirana je za podatke ključ/vrijednost koje pruža tip hstore. Ova je sintaksa u početku implementirana pomoću univerzalnog okvira, koji se u budućnosti može koristiti za druge vrste. Primjer za tip hstore: INSERT INTO mytable VALUES ('a=>b, c=>d'); SELECT h['a'] FROM mytable; AŽURIRAJ mytable SET h['c'] = 'novo';

  • Obitelj tipova za definiranje raspona proširena je novim tipovima "više raspona", koji vam omogućuju navođenje uređenih popisa raspona vrijednosti koji se ne preklapaju. Uz svaki postojeći tip raspona, predlaže se vlastiti tip s više raspona, na primjer, tip “int4range” odgovara “int4multirange”, a tip “daterange” odgovara “datemultirange”. Korištenje novih tipova pojednostavljuje dizajn upita koji manipuliraju složenim nizovima raspona. SELECT '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Napravljene su optimizacije kako bi se poboljšala izvedba visokoopterećenih sustava koji obrađuju veliki broj veza. U nekim testovima uočeno je dvostruko povećanje performansi.
  • Učinkovitost indeksa B-stabla je poboljšana i riješen je problem s rastom indeksa kada se tablice često ažuriraju.
  • Dodana podrška za način cjevovodnog prijenosa zahtjeva na strani klijenta (implementiran na razini libpq), što vam omogućuje značajno ubrzanje scenarija baze podataka povezanih s izvođenjem velikog broja malih operacija pisanja (INSERT/UPDATE/DELETE) slanjem sljedeći zahtjev bez čekanja rezultata prethodnog. Način također pomaže ubrzati rad na vezama s dugim kašnjenjem isporuke paketa.
  • Poboljšane mogućnosti za distribuirane konfiguracije koje uključuju više PostgreSQL poslužitelja. U implementaciji logičke replikacije, sada postaje moguće poslati u streaming modu transakcije koje su u procesu izvršenja, što može značajno poboljšati performanse replikacije velikih transakcija. Osim toga, optimizirano je logičko dekodiranje podataka primljenih tijekom logičke replikacije.
  • Mehanizmu za povezivanje vanjskih tablica Foreign Data Wrapper (postgres_fdw) dodana je podrška za paralelnu obradu upita, koja je trenutno primjenjiva samo pri povezivanju s drugim PostgreSQL poslužiteljima. postgres_fdw također dodaje podršku za dodavanje podataka vanjskim tablicama u skupnom načinu rada i mogućnost uvoza particioniranih tablica navođenjem direktive “IMPORT FOREIGN SCHEMA”.
  • Optimizirana je implementacija operacije VACUUM (skupljanje smeća i pakiranje diskovne memorije). Dodan je način hitnog čišćenja koji preskače nebitne operacije čišćenja ako se stvore uvjeti omota ID-a transakcije. Smanjeni troškovi prilikom obrade indeksa u formatu B-Tree. Značajno je ubrzano izvođenje operacije “ANALIZA” koja prikuplja statistiku o radu baze podataka.
  • Dodana je mogućnost konfiguracije metode kompresije koja se koristi u sustavu TOAST, koji je odgovoran za pohranu velikih podataka, poput blokova teksta ili geometrijskih informacija. Uz metodu kompresije pglz, TOAST sada može koristiti algoritam LZ4.
  • Prošireni su alati za praćenje rada DBMS-a. Dodani prikazi za praćenje napretka COPY naredbi (pg_stat_progress_copy), statistike o utorima za replikaciju (pg_stat_replication_slots) i aktivnosti povezane s WAL zapisnikom transakcija (pg_stat_wal). Dodana je funkcija compute_query_id koja omogućuje različitim podsustavima, kao što su pg_stat_activity i EXPLAIN VERBOSE, praćenje zahtjeva dodjeljivanjem jedinstvenog identifikatora za svaki zahtjev.
  • Optimizacije su dodane planeru upita kako bi se poboljšala paralelna obrada upita i poboljšala izvedba istovremenog izvršavanja sekvencijalnih operacija skeniranja zapisa, paralelnog izvršavanja upita u PL/pgSQL pomoću naredbe “RETURN QUERY” i paralelnog izvršavanja upita u “ OSVJEŽI MATERIJALIZIRANI POGLED”. Kako bi se poboljšala izvedba cikličkih ugniježđenih spajanja (pridruživanja), implementirana je podrška za dodatno predmemoriranje.
  • Napredna statistika sada se može koristiti za optimizaciju izraza, a inkrementalno sortiranje sada se može koristiti za optimizaciju funkcija prozora.
  • Pohranjene procedure koje vam omogućuju upravljanje transakcijama u blokovima koda sada podržavaju definiranje povratnih podataka pomoću "OUT" parametara.
  • Dodana funkcija date_bin za zaokruživanje vrijednosti vremenske oznake u skladu s određenim intervalom. SELECT date_bin('15 minuta', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • Dodani SEARCH i CYCLE izrazi definirani u SQL standardu kako bi se olakšalo naručivanje i identificiranje ciklusa u rekurzivnim zajedničkim tabličnim izrazima (CTE). S REKURZIVNIM search_tree(id, link, data) AS ( SELECT t.id, t.link, t.data FROM stablo t UNION ALL SELECT t.id, t.link, t.data FROM stablo t, search_tree st WHERE t. id = st.link ) DUBINA PRETRAŽIVANJA PRVO PO id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • U uslužnom programu psql poboljšano je automatsko dovršavanje naredbi s karticama, mogućnost prikaza argumenata funkcije dodana je naredbi “\df”, a prikazana statistika je proširena na naredbu “\dX”.
  • Korisnicima je moguće dodijeliti privilegije samo za čitanje ili samo za pisanje. Privilegije se mogu postaviti na pojedinačne tablice, prikaze i sheme pomoću unaprijed definiranih uloga pg_read_all_data i pg_write_all_data. GRANT pg_read_all_data korisniku1;
  • Nove instalacije zadano koriste provjeru autentičnosti lozinkom pomoću SCRAM-SHA-256 umjesto md5 (parametar "password_encryption" pri generiranju postgresql.conf sada je postavljen na 'scram-sha-256').

Izvor: opennet.ru

Dodajte komentar