Uvolnění databázového systému PostgreSQL 14

Po roce vývoje byla zveřejněna nová stabilní verze databázového systému PostgreSQL 14. Aktualizace pro tuto novou verzi budou vycházet po dobu pěti let do listopadu 2026.

Hlavní novinky:

  • Byla přidána podpora pro přístup k datům JSON pomocí výrazů, které připomínají práci s poli: SELECT (‘{ "postgres": { "release": 14 }}’::jsonb)[‘postgres’][‘release’]; SELECT * FROM test WHERE details[‘attributes’][‘size’] = ‘"medium"‘;

    Podobná syntaxe byla implementována i pro data ve formátu klíč/hodnota, která poskytuje typ hstore. Tato syntaxe byla původně implementována pomocí univerzálního rámce, který může být v budoucnu využit i pro další 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 určení rozsahů byla rozšířena o nové typy „multirange“, které umožňují zadávat seřazené seznamy nepřekrývajících se rozsahů hodnot. K každému existujícímu rozsahovému typu byl nabídnut jeho multirange typ, například pro typ „int4range“ odpovídá „int4multirange“, a „daterange“ — „datemultirange“. Použití nových typů usnadňuje formulaci dotazů manipulujících 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 pro zvýšení výkonu vysoce zatížených systémů zpracovávajících velké množství spojení. V některých testech byl zaznamenán dvojnásobný nárůst výkonu.
  • Byla zvýšena účinnost provozu indexů B-tree a vyřešen problém s růstem indexů při častém aktualizování tabulek.
  • Byla přidána podpora pro klientskou režii (implementováno na úrovni libpq) pro režim kontejnerového (pipeline) přenosu dotazů, což umožňuje výrazně urychlit scénáře práce s databází spojené s vykonáváním velkého množství drobných operací zápisu (INSERT/UPDATE/DELETE) tím, že se následující dotaz odešle, aniž by se čekalo na výsledek předchozího. Tento režim také pomáhá urychlit operace při připojeních s vysokými latencemi doručení paketů.
  • Byly rozšířeny možnosti pro distribuované konfigurace zahrnující více servery PostgreSQL. V implementaci logické replikace byla přidána možnost odesílání v reálném čase transakcí, které jsou v procesu vykonávání, což výrazně zvyšuje výkon replikace velkých transakcí. Kromě toho bylo optimalizováno logické dekódování dat přicházejících během logické replikace.
  • Do mechanismu připojení externích tabulek Foreign Data Wrapper (postgres_fdw) byla přidána podpora paralelního zpracování dotazů, která je zatím použitelná pouze při připojení k jiným serverům PostgreSQL. V postgres_fdw byla také přidána podpora pro hromadné přidávání dat do externích tabulek a možnost importu sektorizovaných tabulek pomocí direktivy „IMPORT FOREIGN SCHEMA“.
  • Byly provedeny optimalizace v implementaci operace VACUUM (úklid a balení diskového úložiště). Bylo přidáno nouzové režim čištění („emergency mode“), který vynechává nedůležité úklidové operace, pokud vznikají podmínky k přechodu na druhé kolo identifikátorů transakcí (transaction ID wraparound). Náklady při zpracování indexů ve formátu B-Tree byly značně sníženy. Výkon operace „ANALYZE“, která shromažďuje statistiky o činnosti DB, byl výrazně urychlen.
  • Byla přidána možnost nastavení metody komprese používané v systému TOAST, který se stará o ukládání velkých dat, jako jsou bloky textu nebo geometrické informace. Kromě metody komprese pglz je nyní v TOAST možné použít algoritmus LZ4.
  • Byly rozšířeny prostředky pro sledování činnosti DBMS. Byly přidány pohledy pro sledování pokroku vykonávání příkazů „COPY“ (pg_stat_progress_copy), statistiky o replikací (pg_stat_replication_slots) a činnosti související s WAL-logem transakcí (pg_stat_wal). Byla přidána funkce compute_query_id, která zahrnuje v různých subsystémech, jako jsou pg_stat_activity a EXPLAIN VERBOSE, sledování dotazů s přidělením jedinečného identifikátoru pro každý dotaz.
  • Do plánovače dotazů byly přidány optimalizace, které zlepšují paralelní zpracování dotazů a umožňují zvýšit výkon současného provádění operací sekvenčního skenování záznamů, paralelního spouštění dotazů v PL/pgSQL pomocí příkazu „RETURN QUERY“ a paralelního provádění dotazů v „REFRESH MATERIALIZED VIEW“. Pro zvýšení výkonu cyklických vnořených spojení (join) byla implementována podpora dodatečného cachování.
  • Pro optimalizaci výrazů nyní může být použita rozšířená statistika, a pro optimalizaci okna funkcí — inkrementální třídění.
  • Ve uložených procedurách, které umožňují spravovat transakce v blocích kódu, byla implementována podpora určování vracených dat pomocí parametrů „OUT“.
  • Byla přidána funkce date_bin pro zaokrouhlování hodnot typu timestamp podle zadaného intervalu. SELECT date_bin(’15 minutes’, TIMESTAMP ‘2020-02-11 15:44:17’, TIMESTAMP ‘2001-01-01’); 2020-02-11 15:30:00
  • Byly přidány výrazy SEARCH a CYCLE definované ve standardu SQL, které zjednodušují řazení a identifikaci cyklů v rekurzivních obecných tabulkových výrazech (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;
  • V užitečném programu psql bylo vylepšeno automatické doplňování příkazů tabulátorem, v příkazu „\df“ byla přidána možnost zobrazení argumentů funkcí a v příkazu „\dX“ byla rozšířena výstupní statistika.
  • Byla poskytnuta možnost přidělovat uživatelům oprávnění, která umožňují pouze čtení nebo pouze zápis. Oprávnění mohou být nastavena vázaná na 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;
  • V nových instalacích se jako výchozí používá ověřování pomocí hesla s metodou SCRAM-SHA-256 místo md5 (parametr „password_encryption“ při generování postgresql.conf je nyní nastaven na hodnotu ‘scram-sha-256’).

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster