Izdanje baze podataka PostgreSQL 14

Nakon godinu dana razvoja, objavljena je nova stabilna verzija sustava za upravljanje bazama podataka PostgreSQL 14. Ažuriranja za novu verziju izlazit će tijekom pet godina do studenog 2026. godine.

Glavne novine:

  • Dodana je podrška za pristup JSON podacima putem izraza koji nalikuju radu s nizovima: SELECT (‘{ „postgres“: { „release“: 14 }}’::jsonb)[‘postgres’][‘release’]; SELECT * FROM test WHERE details[‘attributes’][‘size’] = ‘„medium“‘;

    Slična sintaksa implementirana je i za podatke u formatu ključ/vrijednost, omogućene tipom hstore. Slična sintaksa izvorno je implementirana koristeći univerzalni okvir, koji bi se u budućnosti mogao koristiti i za druge tipove. Primjer za tip hstore: INSERT INTO mytable VALUES (‘a=>b, c=>d’); SELECT h[‘a’] FROM mytable; UPDATE mytable SET h[‘c’] = ‘new’;

  • Obitelj tipova za određivanje opsega proširena je novim tipovima „multirange“, koji omogućuju definiranje uređene liste nepokrivenih opsega vrijednosti. Uz svaki postojeći range-tip ponuđen je njegov multirange-tip, na primjer, tipu „int4range“ odgovara „int4multirange“, a „daterange“ — „datemultirange“. Korištenje novih tipova pojednostavljuje sastavljanje upita koji manipuliraju složenim nizovima opsega. SELECT ‘{[3,7), [8,9)}’::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Unesene su optimizacije za povećanje performansi sustava s visokim opterećenjem koji obrađuju veliki broj veza. U nekim je testovima zabilježen dvostruki porast performansi.
  • Povećana je učinkovitost rada B-tree indeksa i riješen je problem s rastom indeksa prilikom čestog ažuriranja tablica.
  • Dodana je podrška za način rada na klijentskoj strani (implementiran na razini libpq) za način cjevovodne (pipeline) transmisije upita, koji značajno ubrzava scenarije rada s bazom podataka povezane s izvršenjem velikog broja malih operacija upisa (INSERT/UPDATE/DELETE) slanjem sljedećeg upita bez čekanja na rezultat prethodnog. Ovaj način također pomaže ubrzati rad prilikom veza s velikim kašnjenjima isporuke paketa.
  • Proširene su mogućnosti za distribuirane konfiguracije koje uključuju više poslužitelja PostgreSQL. U implementaciji logičke replikacije pojavila se mogućnost slanja u streamu transakcija koje su u tijeku, što značajno povećava performanse replikacije velikih transakcija. Osim toga, optimizirano je logičko dekodiranje podataka koji dolaze tijekom logičke replikacije.
  • U mehanizmu povezivanja vanjskih tablica Foreign Data Wrapper (postgres_fdw) dodana je podrška za paralelnu obradu upita, koja se za sada primjenjuje samo pri povezivanju s drugim PostgreSQL poslužiteljima. U postgres_fdw također je dodana podrška za dodavanje podataka u vanjske tablice u paketnom režimu i mogućnost uvoza podijeljenih tablica putem upute 'IMPORT FOREIGN SCHEMA'.
  • Unesene su optimizacije u implementaciju operacije VACUUM (čišćenje i pakiranje diskovnog prostora). Dodan je način rada za hitno čišćenje ('emergency mode'), koji preskoči nebitne operacije čišćenja ako se stvaraju uvjeti za prelazak na drugi krug identifikatora transakcija (transaction ID wraparound). Smanjeni su troškovi obrade indeksa u formatu B-Tree. Značajno je ubrzana operacija 'ANALYZE', koja prikuplja statistiku o radu baze podataka.
  • Dodana je mogućnost podešavanja metode kompresije koja se primjenjuje u sustavu TOAST, koji je odgovoran za pohranu velikih podataka, kao što su blokovi teksta ili geometrijske informacije. Osim metode kompresije pglz, u TOAST se sada može koristiti i algoritam LZ4.
  • Proširena su sredstva za praćenje rada SUSTAVA. Dodana su prikazivanja za praćenje napretka izvršenja naredbi 'COPY' (pg_stat_progress_copy), statistike o replikacijskim slotovima (pg_stat_replication_slots) i aktivnosti povezane s WAL-ologom transakcija (pg_stat_wal). Dodana je funkcija compute_query_id, koja uključuje u različitim podsustavima, kao što su pg_stat_activity i EXPLAIN VERBOSE, praćenje upita uz dodjelu jedinstvenog identifikatora za svaki upit.
  • U planer za upite dodane su optimizacije koje poboljšavaju paralelnu obradu upita i omogućuju povećanje performansi istovremenog izvršavanja operacija sekvencijalnog skeniranja zapisa, paralelnog pokretanja upita u PL/pgSQL pomoću naredbe "RETURN QUERY" i paralelnog izvršavanja upita u "REFRESH MATERIALIZED VIEW". Za poboljšanje performansi cikličnih umetanja (join) implementirana je podrška za dodatno keširanje.
  • Za optimizaciju izraza sada se može koristiti proširena statistika, a za optimizaciju prozorskih funkcija — inkrementalno sortiranje.
  • U pohranjenim procedurama koje omogućuju upravljanje transakcijama unutar blokova koda implementirana je podrška za određivanje vraćenih podataka pomoću "OUT" parametara.
  • Dodana je funkcija date_bin zaokruživanja vrijednosti tipa timestamp u skladu sa zadanom vremenskom jedinicom. SELECT date_bin(’15 minutes’, TIMESTAMP ‘2020-02-11 15:44:17’, TIMESTAMP ‘2001-01-01’); 2020-02-11 15:30:00
  • Dodani su izrazi SEARCH i CYCLE definirani standardom SQL, koji pojednostavljuju sortiranje i otkrivanje ciklusa u rekurzivnim općenitim tabelarnim izrazima (Common Table Expression, CTE). WITH RECURSIVE search_tree(id, link, data) AS ( SELECT t.id, t.link, t.data FROM tree t UNION ALL SELECT t.id, t.link, t.data FROM tree t, search_tree st WHERE t.id = st.link ) SEARCH DEPTH FIRST BY id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • U alatu psql poboljšano je automatsko dovršavanje naredbi pritiskom na tipku Tab, u naredbi "\df" dodana je mogućnost prikaza argumenata funkcija, a u naredbi "\dX" proširena je ispisana statistika.
  • Omogućeno je dodijeljivanje privilegija korisnicima koje dopuštaju samo čitanje ili samo pisanje. Privilegije se mogu odrediti u vezi s posebnim tablicama, pogledima i shemama pomoću unaprijed definirajućih uloga pg_read_all_data i pg_write_all_data. GRANT pg_read_all_data TO user1;
  • U novim instalacijama prema zadanim postavkama osigurana je primjena autentifikacije lozinkom koristeći metodu SCRAM-SHA-256 umjesto md5 (parametar "password_encryption" prilikom generiranja postgresql.conf sada se postavlja na vrijednost ‘scram-sha-256’).

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster