Izdaja DBMS PostgreSQL 14

Po enem letu razvoja je bila objavljena nova stabilna veja DBMS PostgreSQL 14. Posodobitve za novo vejo bodo izdane v petih letih do novembra 2026.

Glavne novosti:

  • Dodana podpora za dostop do podatkov JSON z uporabo izrazov, podobnih matriki: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE details['attributes']['size'] = '"medium"';

    Podobna sintaksa je implementirana za podatke ključ/vrednost, ki jih zagotavlja vrsta hstore. Ta sintaksa je bila prvotno implementirana z uporabo univerzalnega ogrodja, ki bo v prihodnosti morda uporabljeno za druge vrste. Primer za vrsto hstore: INSERT INTO mytable VALUES ('a=>b, c=>d'); SELECT h['a'] FROM mytable; POSODOBITE mytable SET h['c'] = 'novo';

  • Družina tipov za definiranje obsegov je bila razširjena z novimi tipi »multirange«, ki vam omogočajo, da podate urejene sezname neprekrivajočih obsegov vrednosti. Poleg vsakega obstoječega tipa obsega je predlagan lasten tip večrazpona, na primer tip »int4range« ustreza »int4multirange«, tip »daterange« pa ustreza »datemultirange«. Uporaba novih tipov poenostavi oblikovanje poizvedb, ki manipulirajo s kompleksnimi zaporedji obsegov. IZBERITE '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Izvedene so bile optimizacije za izboljšanje zmogljivosti visoko obremenjenih sistemov, ki obdelujejo veliko število povezav. V nekaterih testih je opaziti dvakratno povečanje učinkovitosti.
  • Učinkovitost indeksov B-drevesa je bila izboljšana in težava z rastjo indeksa, ko se tabele pogosto posodabljajo, je bila odpravljena.
  • Dodana podpora za način cevovodnega prenosa zahtev na strani odjemalca (implementiran na ravni libpq), ki vam omogoča znatno pospešitev scenarijev baze podatkov, povezanih z izvajanjem velikega števila majhnih operacij pisanja (INSERT/UPDATE/DELETE) s pošiljanjem naslednja zahteva brez čakanja na rezultat prejšnje. Način tudi pomaga pospešiti delo na povezavah z dolgimi zamiki pri dostavi paketov.
  • Izboljšane zmogljivosti za porazdeljene konfiguracije, ki vključujejo več strežnikov PostgreSQL. Pri implementaciji logične replikacije je sedaj možno pošiljanje transakcij v pretočnem načinu, ki so v procesu izvajanja, kar lahko bistveno izboljša zmogljivost replikacije velikih transakcij. Poleg tega je bilo optimizirano logično dekodiranje podatkov, prejetih med logično replikacijo.
  • Mehanizem za povezovanje zunanjih tabel Foreign Data Wrapper (postgres_fdw) ima dodano podporo za vzporedno obdelavo poizvedb, ki je trenutno uporabna samo pri povezovanju z drugimi strežniki PostgreSQL. postgres_fdw dodaja tudi podporo za dodajanje podatkov zunanjim tabelam v paketnem načinu in možnost uvoza particioniranih tabel z določitvijo direktive “IMPORT FOREIGN SCHEMA”.
  • Optimizirana je bila izvedba operacije VACUUM (zbiranje smeti in pakiranje diskovnega pomnilnika). Dodan je bil način čiščenja v sili, ki preskoči nebistvene operacije čiščenja, če so ustvarjeni pogoji ovijanja ID-ja transakcije. Zmanjšanje stroškov pri obdelavi indeksov v formatu B-Tree. Bistveno je pospešeno izvajanje operacije “ANALIZA”, ki zbira statistiko o delovanju baze podatkov.
  • Dodana možnost konfiguracije metode stiskanja, uporabljene v sistemu TOAST, ki je odgovorna za shranjevanje velikih podatkov, kot so bloki besedila ali geometrijske informacije. Poleg metode stiskanja pglz lahko TOAST zdaj uporablja algoritem LZ4.
  • Razširjena so orodja za spremljanje delovanja DBMS. Dodani pogledi za sledenje napredku ukazov COPY (pg_stat_progress_copy), statističnih podatkov o režah za replikacijo (pg_stat_replication_slots) in dejavnosti, povezane z dnevnikom transakcij WAL (pg_stat_wal). Dodana je bila funkcija compute_query_id, ki omogoča različnim podsistemom, kot sta pg_stat_activity in EXPLAIN VERBOSE, sledenje zahtevam z dodelitvijo edinstvenega identifikatorja za vsako zahtevo.
  • Načrtovalcu poizvedb so bile dodane optimizacije za izboljšanje vzporedne obdelave poizvedb in izboljšanje zmogljivosti hkratnega izvajanja operacij zaporednega skeniranja zapisov, vzporednega izvajanja poizvedb v PL/pgSQL z uporabo ukaza “RETURN QUERY” in vzporednega izvajanja poizvedb v “ OSVEŽI MATERIALIZIRANI POGLED«. Za izboljšanje zmogljivosti cikličnih ugnezdenih spajanj (združevanje) je bila implementirana podpora za dodatno predpomnjenje.
  • Napredne statistike je zdaj mogoče uporabiti za optimizacijo izrazov, inkrementalno razvrščanje pa je zdaj mogoče uporabiti za optimizacijo okenskih funkcij.
  • Shranjene procedure, ki vam omogočajo upravljanje transakcij v blokih kode, zdaj podpirajo definiranje povratnih podatkov z uporabo parametrov »OUT«.
  • Dodana funkcija date_bin za zaokroževanje vrednosti časovnih žigov glede na določen interval. SELECT date_bin('15 minut', ČASOVNI ŽIG '2020-02-11 15:44:17', ČASOVNI ŽIG '2001-01-01'); 2020-02-11 15:30:00
  • Dodani izrazi SEARCH in CYCLE, definirani v standardu SQL, za lažje razvrščanje in prepoznavanje ciklov v rekurzivnih skupnih tabelnih izrazih (CTE). Z REKURZIVNIm 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 ) GLOBINA ISKANJA NAJPREJ PO id SET ordercol IZBERI * FROM search_tree ORDER BY ordercol;
  • V pripomočku psql je izboljšano samodokončanje ukazov z zavihki, ukazu “\df” je dodana možnost prikaza funkcijskih argumentov, prikazana statistika pa je razširjena na ukaz “\dX”.
  • Uporabnikom je mogoče dodeliti privilegije samo za branje ali samo za pisanje. Privilegije je mogoče nastaviti za posamezne tabele, poglede in sheme z uporabo vnaprej določenih vlog pg_read_all_data in pg_write_all_data. GRANT pg_read_all_data uporabniku1;
  • Nove namestitve privzeto uporabljajo avtentikacijo z geslom z uporabo SCRAM-SHA-256 namesto md5 (parameter "password_encryption" pri generiranju postgresql.conf je zdaj nastavljen na 'scram-sha-256').

Vir: opennet.ru

Dodaj komentar