Vydání PostgreSQL 14

Po roce vývoje byla zveřejněna nová stabilní větev PostgreSQL 14 DBMS. Aktualizace pro novou větev budou vydávány během pěti let do listopadu 2026.

Hlavní inovace:

  • Přidána podpora pro přístup k datům JSON pomocí výrazů podobných poli: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE podrobnosti['attributes']['size'] = '"střední"';

    Podobná syntaxe je implementována pro data klíč/hodnota poskytovaná typem hstore. Tato syntaxe byla zpočátku implementována pomocí univerzálního rámce, který může být v budoucnu použit pro jiné typy. Příklad pro typ hstore: INSERT INTO mytable VALUES ('a=>b, c=>d'); SELECT h['a'] FROM mytable; UPDATE mytable SET h['c'] = 'new';

  • Rodina typů pro definování rozsahů byla rozšířena o nové „vícerozsahové“ typy, které umožňují specifikovat uspořádané seznamy nepřekrývajících se rozsahů hodnot. Kromě každého existujícího typu rozsahu je navržen jeho vlastní vícerozsahový typ, například typ „int4range“ odpovídá „int4multirange“ a typ „daterange“ odpovídá „datemultirange“. Použití nových typů zjednodušuje návrh dotazů, které manipulují se složitými sekvencemi rozsahů. SELECT '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Byly provedeny optimalizace s cílem zlepšit výkon vysoce zatěžovaných systémů zpracovávajících velký počet připojení. V některých testech je pozorován dvojnásobný nárůst výkonu.
  • Účinnost indexů B-stromu byla vylepšena a problém s růstem indexu při časté aktualizaci tabulek byl vyřešen.
  • Přidána podpora pro režim přenosu požadavků na straně klienta (implementovaný na úrovni libpq), který umožňuje výrazně urychlit databázové scénáře spojené s prováděním velkého počtu malých operací zápisu (INSERT/UPDATE/DELETE) odesláním další požadavek bez čekání na výsledek předchozího. Režim také pomáhá urychlit práci na připojení s dlouhými zpožděními doručení paketů.
  • Vylepšené možnosti pro distribuované konfigurace zahrnující více serverů PostgreSQL. Při implementaci logické replikace je nyní možné odesílat transakce v režimu streamování, které jsou v procesu provádění, což může výrazně zlepšit výkon replikace velkých transakcí. Kromě toho bylo optimalizováno logické dekódování dat přijatých během logické replikace.
  • Mechanismus pro připojení externích tabulek Foreign Data Wrapper (postgres_fdw) přidal podporu pro paralelní zpracování dotazů, které je v současnosti použitelné pouze při připojení k jiným PostgreSQL serverům. postgres_fdw také přidává podporu pro přidávání dat do externích tabulek v dávkovém režimu a možnost importovat rozdělené tabulky zadáním direktivy “IMPORT FOREIGN SCHEMA”.
  • Byly provedeny optimalizace implementace operace VACUUM (sběr odpadu a balení diskového úložiště). Byl přidán režim nouzového čištění, který přeskočí operace čištění, které nejsou nezbytné, pokud jsou vytvořeny podmínky pro obtékání ID transakce. Snížená režie při zpracování indexů ve formátu B-Strom. Výrazně se zrychlilo provádění operace „ANALÝZA“, která shromažďuje statistiky o provozu databáze.
  • Přidána možnost konfigurovat metodu komprese používanou v systému TOAST, který je zodpovědný za ukládání velkých dat, jako jsou bloky textu nebo geometrické informace. Kromě kompresní metody pglz může TOAST nyní používat algoritmus LZ4.
  • Byly rozšířeny nástroje pro sledování provozu SŘB. Přidány pohledy pro sledování průběhu příkazů COPY (pg_stat_progress_copy), statistiky o slotech replikace (pg_stat_replication_slots) a aktivity související s protokolem transakcí WAL (pg_stat_wal). Byla přidána funkce compute_query_id, která umožňuje různým podsystémům, jako je pg_stat_activity a EXPLAIN VERBOSE, sledovat požadavky přiřazením jedinečného identifikátoru každému požadavku.
  • Do plánovače dotazů byly přidány optimalizace pro zlepšení paralelního zpracování dotazů a zlepšení výkonu simultánního provádění operací sekvenčního skenování záznamů, paralelního provádění dotazů v PL/pgSQL pomocí příkazu „RETURN QUERY“ a paralelního provádění dotazů v „ OBNOVIT MATERIALIZOVANÝ POHLED“. Pro zlepšení výkonu cyklických vnořených sloučení (join) byla implementována podpora pro další ukládání do mezipaměti.
  • K optimalizaci výrazů lze nyní použít pokročilé statistiky a k optimalizaci funkcí okna lze nyní použít přírůstkové řazení.
  • Uložené procedury, které umožňují spravovat transakce v blocích kódu, nyní podporují definování návratových dat pomocí parametrů "OUT".
  • Přidána funkce date_bin k zaokrouhlování hodnot časového razítka podle zadaného intervalu. SELECT date_bin('15 minut', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020 02:11:15
  • Přidány výrazy SEARCH a CYCLE definované ve standardu SQL, které usnadňují řazení a identifikaci cyklů v rekurzivních výrazech 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 ) HLOUBKA HLEDÁNÍ FIRST BY id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • V obslužném programu psql bylo vylepšeno automatické doplňování příkazů pomocí karet, u příkazu „\df“ byla přidána možnost zobrazení argumentů funkcí a zobrazované statistiky byly rozšířeny na příkaz „\dX“.
  • Uživatelům je možné přidělit oprávnění pouze pro čtení nebo pouze pro zápis. Oprávnění lze nastavit pro jednotlivé tabulky, pohledy a schémata pomocí předdefinovaných rolí pg_read_all_data a pg_write_all_data. GRANT pg_read_all_data TO user1;
  • Nové instalace standardně používají ověřování heslem pomocí SCRAM-SHA-256 namísto md5 (parametr "password_encryption" při generování postgresql.conf je nyní nastaven na 'scram-sha-256').

Zdroj: opennet.ru

Přidat komentář