PostgreSQL 14 izdanje

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

Glavne inovacije:

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

    Slična sintaksa je implementirana za podatke ključ/vrijednost koje daje tip hstore. Ova sintaksa je prvobitno implementirana koristeći univerzalni okvir, koji se u budućnosti može koristiti za druge tipove. Primjer za tip hstore: INSERT INTO mytable VRIJEDNOSTI ('a=>b, c=>d'); SELECT h['a'] IZ mytable; UPDATE mytable SET h['c'] = 'novo';

  • Porodica tipova za definisanje opsega je proširena novim tipovima „više opsega“, koji vam omogućavaju da specificirate uređene liste nepreklapajućih opsega vrednosti. Pored svakog postojećeg tipa raspona, predlaže se i njegov vlastiti tip više raspona, na primjer, tip “int4range” odgovara “int4multirange”, a tip “daterange” odgovara “datemultirange”. Upotreba novih tipova pojednostavljuje dizajn upita koji manipulišu složenim nizovima opsega. SELECT '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(nummultirange(1.0, 14.0), nummultirange(20.0, 25.0));
  • Urađene su optimizacije za poboljšanje performansi sistema visokog opterećenja koji obrađuju veliki broj veza. U nekim testovima uočeno je dvostruko povećanje performansi.
  • Poboljšana je efikasnost indeksa B-stabla i riješen je problem sa rastom indeksa kada se tabele često ažuriraju.
  • Dodata podrška za klijentski (implementirani na nivou libpq) način prijenosa zahtjeva putem cjevovoda, što vam omogućava da značajno ubrzate scenarije baze podataka povezanih s izvođenjem velikog broja malih operacija pisanja (INSERT/UPDATE/DELETE) slanjem sljedeći zahtjev bez čekanja rezultata prethodnog. Režim također pomaže da se ubrza rad na vezama s dugim kašnjenjima isporuke paketa.
  • Poboljšane mogućnosti za distribuirane konfiguracije koje uključuju više PostgreSQL servera. U implementaciji logičke replikacije sada postaje moguće slanje u streaming modu transakcija 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 tokom logičke replikacije.
  • Mehanizam za povezivanje eksternih tabela Foreign Data Wrapper (postgres_fdw) je dodao podršku za paralelnu obradu upita, koja je trenutno primenljiva samo kada se povezujete na druge PostgreSQL servere. postgres_fdw također dodaje podršku za dodavanje podataka vanjskim tablicama u batch modu i mogućnost uvoza particioniranih tabela specificiranjem direktive “IMPORT FOREIGN SCHEMA”.
  • Izvršene su optimizacije u implementaciji operacije VACUUM (prikupljanje smeća i pakovanje disk memorije). Dodan je način hitnog čišćenja koji preskače nebitne operacije čišćenja ako se kreiraju uvjeti zaokruživanja ID-a transakcije. Smanjeni troškovi prilikom obrade indeksa u B-Tree formatu. Značajno je ubrzano izvršenje operacije „ANALIZA“ kojom se prikupljaju statistički podaci o radu baze podataka.
  • Dodata je mogućnost konfigurisanja metode kompresije koja se koristi u TOAST sistemu, koji je odgovoran za skladištenje velikih podataka, kao što su blokovi teksta ili geometrijske informacije. Pored pglz metode kompresije, TOAST sada može koristiti LZ4 algoritam.
  • Alati za praćenje rada DBMS-a su prošireni. Dodati pregledi za praćenje napretka COPY komandi (pg_stat_progress_copy), statistike o slotovima replikacije (pg_stat_replication_slots) i aktivnosti u vezi sa WAL dnevnikom transakcija (pg_stat_wal). Dodana je funkcija compute_query_id, koja omogućava različitim podsistemima, kao što su pg_stat_activity i EXPLAIN VERBOSE, da prate zahtjeve dodjeljivanjem jedinstvenog identifikatora za svaki zahtjev.
  • Dodane su optimizacije u planer upita radi poboljšanja paralelne obrade upita i poboljšanja performansi 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 “ OSVEŽITE MATERIJALIZOVANI POGLED”. Za poboljšanje performansi cikličkog ugniježđenog spajanja (pridruživanja), implementirana je podrška za dodatno keširanje.
  • Napredna statistika se sada može koristiti za optimizaciju izraza, a inkrementalno sortiranje se sada može koristiti za optimizaciju funkcija prozora.
  • Pohranjene procedure koje vam omogućavaju upravljanje transakcijama u blokovima koda sada podržavaju definiranje povratnih podataka korištenjem parametara "OUT".
  • Dodata funkcija date_bin za zaokruživanje vrijednosti vremenske oznake prema određenom intervalu. SELECT date_bin('15 minuta', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • Dodani izrazi SEARCH i CYCLE definirani u SQL standardu kako bi se olakšalo organiziranje i identificiranje ciklusa u rekurzivnim Common Table Expressions (CTE). SA REKURSIVNIM stablom_pretraživanja(id, link, podaci) AS ( SELECT t.id, t.link, t.data FROM tree t UNION ALL SELECT t.id, t.link, t.data FROM stablo t, search_tree st GDJE t. id = st.link ) DUBINA PRETRAŽIVANJA PRVO PO id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • U psql uslužnom programu poboljšano je automatsko dovršavanje komandi sa tabovima, mogućnost prikaza argumenata funkcije je dodana naredbi “\df”, a prikazana statistika je proširena na “\dX” komandu.
  • Korisnicima je moguće dodijeliti privilegije samo za čitanje ili samo za pisanje. Privilegije se mogu postaviti na pojedinačne tabele, poglede i šeme koristeći unaprijed definirane uloge pg_read_all_data i pg_write_all_data. GRANT pg_read_all_data korisniku1;
  • Nove instalacije podrazumevano koriste autentifikaciju lozinkom koristeći SCRAM-SHA-256 umesto md5 (parametar "password_encryption" prilikom generisanja postgresql.conf je sada postavljen na 'scram-sha-256').

izvor: opennet.ru

Dodajte komentar