Vydanie PostgreSQL 14 DBMS

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.
  • Vylepšené možnosti pre distribuované konfigurácie zahŕňajúce viacero serverov PostgreSQL. Pri implementácii logickej replikácie je teraz možné odosielať prebiehajúce transakcie v režime streamovania, čo môže výrazne zlepšiť výkon replikácie veľkých transakcií. Okrem toho bolo optimalizované 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

Pridať komentár