Aasta kestnud arenduse jÀrel on vÀlja antud uus stabiilne PostgreSQL 14 versioon. Uuendusi uues versioonis hakatakse vÀlja andma jÀrgmise viie aasta jooksul kuni novembrini 2026.
PÔhilised uuendused:
- Lisatud on toetus JSON andmete juurde pÀÀsemiseks vĂ€ljendite kaudu, mis meenutavad töötamist massiividega: SELECT (â{ «postgres»: { «release»: 14 }}â::jsonb)[âpostgresâ][âreleaseâ]; SELECT * FROM test WHERE details[âattributesâ][âsizeâ] = â»medium»â;
Sarnane sĂŒntaks on rakendatud ka vĂ”tme/vÀÀrtuse formaadis andmete jaoks, mida pakub hstore tĂŒĂŒp. Selline sĂŒntaks on algselt rakendatud universaalse raamistiku abil, mida tulevikus vĂ”ib kasutada ka muude tĂŒĂŒpide jaoks. NĂ€ide hstore tĂŒĂŒbi kohta: INSERT INTO mytable VALUES (âa=>b, c=>dâ); SELECT h[âaâ] FROM mytable; UPDATE mytable SET h[âcâ] = ânewâ;
- TĂŒĂŒpide perekond mÀÀratlemiseks laiendatud uute 'multirange' tĂŒĂŒpidega, mis vĂ”imaldavad mÀÀrata jĂ€rjestatud mitteĂŒhtivad vÀÀrtuste vahemikke. Iga olemasoleva vahemiku tĂŒĂŒbile on ette nĂ€htud oma multirange tĂŒĂŒp, nĂ€iteks 'int4range' vastab 'int4multirange' ja 'daterange' â 'datemultirange'. Uute tĂŒĂŒpide kasutamine lihtsustab keerukate vahemike jĂ€rjestuste haldamise pĂ€ringute koostamist. SELECT â{[3,7), [8,9)}â::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
- Optimeeritud on suure koormusega sĂŒsteemide tootlikkuse tĂ”stmiseks, mis töötlevad suurt arvu ĂŒhendusi. MĂ”nes testis on tĂ€heldatud kahekordset tootlikkuse kasvu.
- B-puu indeksite töö tÔhusust on parandatud ning lahendatud on probleem indeksite suurenemisega sagedaste tabelite uuenduste korral.
- Lisatud tugi klientpoolse töötamise reĆŸiimile (teostatud libpq tasemel) pipelining'i pĂ€ringute edastamiseks, mis vĂ”imaldab oluliselt kiirendada andmebaasi töötsenaariume, mis on seotud paljude vĂ€ikeste kirjutamistegevustega (INSERT/UPDATE/DELETE), saates jĂ€rgmise pĂ€ringu ootamata eelmise vastust. ReĆŸiim aitab samuti kiirendada tööd suurte pakettide edastusviivitustega ĂŒhendustes.
- TÔhustatud vÔimalused jaotatud konfiguratsioonide jaoks, mis hÔlmavad mitut serverite PostgreSQL. Loogilise replikatsiooni rakenduses on lisandunud reaalajas tehingute edastamise vÔimalus, mis vÔimaldab mÀrkimisvÀÀrselt parandada suurte tehingute replikatsiooni jÔudlust. Lisaks on optimeeritud loogiline dekodeerimine loogilise replikatsiooni kÀigus edastatavate andmete jaoks.
- VĂ€liste tabelite Foreign Data Wrapper (postgres_fdw) ĂŒhendusmehhanismi on lisatud toimetuleku jĂ€rjestuste toetamine, mis kehtib praegu ainult muude PostgreSQL serverite ĂŒhendamisel. postgres_fdw-s on samuti lisatud vĂ”imalus andmete lisamiseks vĂ€listele tabelitele partii reĆŸiimis ja sektsioonitud tabelite importimine, kasutades direktiivi «IMPORT FOREIGN SCHEMA».
- VACUUM operatsiooni (jÀÀtmete kogumine ja ketasruumi pakkimine) teostuses on tehtud optimeerimised. Lisatud on hĂ€daolukorra puhastamise reĆŸiim, mis vĂ€ldib ebatĂ€htsaid puhastamisoperatsioone, kui tekivad tingimused, mis vĂ”ivad pĂ”hjustada teise ringi tehingute identifikaatorite (transaction ID) ĂŒlevoolu. B-Tree formaadis indeksite töötlemise ĂŒlehind on vĂ€hendatud. ANALYZE operatsiooni, mis kogub andmebaasi tööstatistikat, kĂ€itamine on oluliselt kiirem.
- Lisatud on vĂ”imalus seadistada kompressioonimeetod, mida kasutatakse sĂŒsteemis TOAST, mis vastutab suurte andmete, nagu tekstiblockide vĂ”i geomeetrilise teabe, salvestamise eest. TOAST-is on lisaks pglz kompressioonimeetodile nĂŒĂŒd vĂ”imalik kasutada ka LZ4 algoritmi.
- Andmeid andmebaasi töö jĂ€lgimise jaoks on laiendatud. On lisatud vaated kĂ€skluste âCOPYâ edenemise jĂ€lgimiseks (pg_stat_progress_copy), replikatsiooni slotide statistika (pg_stat_replication_slots) ja WAL-logi tegevuse (pg_stat_wal) jĂ€lgimiseks. Lisatud on funktsioon compute_query_id, mis hĂ”lmab erinevates alamprogrammides, nagu pg_stat_activity ja EXPLAIN VERBOSE, pĂ€ringute jĂ€lgimist, mÀÀrates iga pĂ€ringu jaoks unikaalse identifikaatori.
- PĂ€ringute planeerijasse on lisatud optimeerimised, mis parandavad pĂ€ringute paralleelset töötlemist ning vĂ”imaldavad suurendada samaaegsete operatsioonide jĂ€rjestikuste skaneerimiste, PL/pgSQL pĂ€ringute paralleelse kĂ€ivitamise kĂ€suga âRETURN QUERYâ ja pĂ€ringute paralleelse tĂ€itmise âREFRESH MATERIALIZED VIEWâ kĂ€skluse all. Ajalooliste liitumiste (join) tĂ”hususe suurendamiseks on sisse viidud tĂ€iendava vahemĂ€lu toetamist.
- VĂ€ljendite optimeerimiseks saab nĂŒĂŒd kasutada laiendatud statistikat ning akna funktsioonide optimeerimiseks on rakendatud inkrementaalset sortimist.
- Salvestusprotseduurides, mis vĂ”imaldavad hallata tehinguid koodiblokkides, on rakendatud toega tagastatavate andmete mÀÀramiseks âOUTâ parameetrite kaudu.
- Lisatud on date_bin funktsioon, mis vĂ”imaldab ĂŒmarate timestamp vÀÀrtuste mÀÀramist vastavalt antud intervallile. SELECT date_bin(â15 minutesâ, TIMESTAMP â2020-02-11 15:44:17â, TIMESTAMP â2001-01-01â); 2020-02-11 15:30:00.
- SQL standardis mÀÀratletud vĂ€ljendid SEARCH ja CYCLE on lisatud, et lihtsustada jĂ€rjestamist ja tsĂŒklite tuvastamist rekurssivates ĂŒldistes tabelivĂ€ljendustes (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;
- KĂ€itusprogrammis psql on parandatud kĂ€su automaatset tĂ€iendamist, tabulatorklaviatuuriga, kĂ€sus â\dfâ on lisandunud vĂ”imalus funktsioonide argumendi kuvamiseks ja kĂ€sus â\dXâ on laiendatud vĂ€ljundstatistikat.
- Kasutajatele on antud Ă”iguste mÀÀramise vĂ”imalus, mis vĂ”imaldavad ainult lugeda vĂ”i ainult kirjutada. Ăigused vĂ”ivad olla mÀÀratud seostatuna ĂŒksikute tabelite, vaadete ja skeemidega, kasutades eelmÀÀratud rolle pg_read_all_data ja pg_write_all_data. GRANT pg_read_all_data TO user1;
- Uutes installatsioonides on vaikesĂ€tetena tagatud parooli autentimise rakendamine SCRAM-SHA-256 meetodiga md5 asemel (parameeter âpassword_encryptionâ postgresql.conf-i genereerimisel on nĂŒĂŒd seatud vÀÀrtusele âscram-sha-256â).
Allikas: opennet.ru
