Po roku vývoja bola zverejnená nová stabilná vetva DBMS PostgreSQL 14. Aktualizácie pre novú vetvu budú vychádzať počas piatich rokov do novembra 2026.
Hlavné inovácie:
- Pridaná podpora pre prístup k údajom JSON pomocou výrazov podobných poliam: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE podrobnosti['attributes']['size'] = '"stredne"';
Podobná syntax je implementovaná pre údaje kľúč/hodnota poskytované typom hstore. Táto syntax bola pôvodne implementovaná pomocou univerzálneho rámca, ktorý sa v budúcnosti môže použiť aj pre iné typy. Príklad pre typ hstore: INSERT INTO mytable VALUES ('a=>b, c=>d'); SELECT h['a'] FROM mytable; UPDATE mytable SET h['c'] = 'new';
- Rodina typov na definovanie rozsahov bola rozšírená o nové „viacrozsahové“ typy, ktoré umožňujú špecifikovať usporiadané zoznamy neprekrývajúcich sa rozsahov hodnôt. Okrem každého existujúceho typu rozsahu sa navrhuje jeho vlastný viacrozsahový typ, napríklad typ „int4range“ zodpovedá „int4multirange“ a typ „daterange“ zodpovedá „datemultirange“. Použitie nových typov zjednodušuje návrh dopytov, ktoré manipulujú so zložitými sekvenciami rozsahov. SELECT '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
- Boli vykonané optimalizácie na zlepšenie výkonu systémov s vysokou záťažou, ktoré spracovávajú veľké množstvo pripojení. V niektorých testoch je pozorovaný dvojnásobný nárast výkonu.
- Efektívnosť indexov B-stromu bola vylepšená a problém s rastom indexu pri častej aktualizácii tabuliek bol vyriešený.
- Pridaná podpora pre režim prenosu požiadaviek na strane klienta (implementovaný na úrovni libpq), ktorý umožňuje výrazne urýchliť databázové scenáre spojené s vykonávaním veľkého počtu malých operácií zápisu (INSERT/UPDATE/DELETE) odoslaním ďalšej žiadosti bez čakania na výsledok predchádzajúcej žiadosti. Režim tiež pomáha zrýchliť prácu na pripojeniach s dlhým oneskorením doručovania paketov.
- Rozšírené možnosti pre distribuované konfigurácie, ktoré zahŕňajú viacero serverov PostgreSQL. Logická replikácia teraz podporuje streamovanie prebiehajúcich transakcií, čím sa výrazne zlepšuje výkon replikácie veľkých transakcií. Optimalizované bolo aj logické dekódovanie údajov prijatých počas logickej replikácie.
- Mechanizmus na pripojenie externých tabuliek Foreign Data Wrapper (postgres_fdw) má pridanú podporu pre paralelné spracovanie dotazov, ktoré je momentálne použiteľné len pri pripájaní k iným PostgreSQL serverom. postgres_fdw tiež pridáva podporu pre pridávanie údajov do externých tabuliek v dávkovom režime a schopnosť importovať rozdelené tabuľky zadaním direktívy “IMPORT FOREIGN SCHEMA”.
- Optimalizácia prebehla pri implementácii operácie VACUUM (odvoz odpadu a balenie diskového úložiska). Bol pridaný režim núdzového vyčistenia, ktorý vynechá nepodstatné operácie čistenia, ak sa vytvoria podmienky obtekania ID transakcie. Znížená réžia pri spracovaní indexov vo formáte B-Strom. Výrazne sa zrýchlilo vykonávanie operácie „ANALÝZA“, ktorá zhromažďuje štatistiky o prevádzke databázy.
- Pridaná možnosť konfigurácie metódy kompresie používanej v systéme TOAST, ktorý je zodpovedný za ukladanie veľkých dát, ako sú bloky textu alebo geometrické informácie. Okrem kompresnej metódy pglz môže TOAST teraz používať aj algoritmus LZ4.
- Rozšírili sa nástroje na monitorovanie prevádzky SŘB. Pridané zobrazenia na sledovanie priebehu príkazov COPY (pg_stat_progress_copy), štatistiky o replikačných slotoch (pg_stat_replication_slots) a aktivity súvisiace s protokolom transakcií WAL (pg_stat_wal). Bola pridaná funkcia compute_query_id, ktorá umožňuje rôznym podsystémom, ako napríklad pg_stat_activity a EXPLAIN VERBOSE, sledovať požiadavky priradením jedinečného identifikátora každej požiadavke.
- Do plánovača dotazov boli pridané optimalizácie na zlepšenie paralelného spracovania dotazov a zlepšenie výkonu simultánneho vykonávania operácií sekvenčného skenovania záznamov, paralelného vykonávania dotazov v PL/pgSQL pomocou príkazu „RETURN QUERY“ a paralelného vykonávania dotazov v „ OBNOVIŤ MATERIALIZOVANÝ POHĽAD“. Na zlepšenie výkonu cyklických vnorených zlúčení (join) bola implementovaná podpora pre ďalšie ukladanie do vyrovnávacej pamäte.
- Na optimalizáciu výrazov je teraz možné použiť pokročilú štatistiku a na optimalizáciu funkcií okna je možné použiť prírastkové triedenie.
- Uložené procedúry, ktoré vám umožňujú spravovať transakcie v blokoch kódu, teraz podporujú definovanie návratových údajov pomocou parametrov "OUT".
- Pridaná funkcia date_bin na zaokrúhľovanie hodnôt časovej pečiatky podľa určeného intervalu. SELECT date_bin('15 minút', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020 02:11:15
- Pridané výrazy SEARCH a CYCLE definované v štandarde SQL na uľahčenie objednávania a identifikácie cyklov v rekurzívnych výrazoch Common Table Expressions (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 ) HĹBKA VYHĽADÁVANIA FIRST BY id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
- V utilite psql bolo vylepšené automatické dopĺňanie príkazov pomocou kariet, do príkazu „\df“ pribudla možnosť zobrazenia argumentov funkcií a zobrazovaná štatistika bola rozšírená na príkaz „\dX“.
- Používateľom je možné prideliť privilégiá len na čítanie alebo zápis. Privilégiá je možné nastaviť pre jednotlivé tabuľky, zobrazenia a schémy pomocou preddefinovaných rolí pg_read_all_data a pg_write_all_data. GRANT pg_read_all_data TO user1;
- Nové inštalácie štandardne používajú autentifikáciu heslom pomocou SCRAM-SHA-256 namiesto md5 (parameter „password_encryption“ pri generovaní postgresql.conf je teraz nastavený na „scram-sha-256“).
Zdroj: opennet.ru
