Vydání SGBD PostgreSQL 17

Po roce vývoje byla zveřejněna nová stabilní verze databázového systému PostgreSQL 17. Aktualizace pro novou verzi budou vydávány po dobu pěti let až do listopadu 2029. Podpora PostgreSQL 12.x, nejstarší z podporovaných verzí, bude ukončena 14. listopadu.

Hlavní novinky:

  • Při provádění operace VACUUM (úklid, čištění a balení diskového úložiště) byla nasazena nová datová struktura, která spotřebovává až 20krát méně paměti. Přechod na novou strukturu umožnil zrychlit provádění operací VACUUM a snížit spotřebu sdílených zdrojů.
  • Pokračuje optimalizace výkonu vstupu/výstupu. Díky vylepšení kódu pro zpracování protokolu o zpožděném zápisu WAL bylo možné až dvakrát zvýšit propustnost zapisovacích operací v systémech s vysokým počtem současně prováděných dotazů. Byl navržen nový rozhraní pro streamování vstupu/výstupu, které zlepšilo rychlost sekvenčního procházení dat v tabulkách a urychlilo aktualizaci statistik pro plánovač dotazů po provedení operace ANALYZE.
  • Byl zvýšen výkon dotazů s výrazem „IN“, pokud se v nich používají indexy založené na struktuře B-tree. Byla implementována možnost paralelního vytváření indexů BRIN (Block Range Index). V plánovači dotazů byly optimalizovány kontroly „NOT NULL“ a urychlena zpracování obecných tabulkových výrazů (Common Table Expression, CTE) definovaných pomocí SQL příkazu „WITH“. Bylo zajištěno využití vektorových procesorových instrukcí (SIMD) k urychlení některých výpočtů, například pro zrychlení funkce bit_count byly využity instrukce AVX-512.
  • Byla implementována podpora nových funkcí pro práci s formátem JSON, definovaných ve standardu SQL/JSON. Byla přidána funkce JSON-TABLE pro převod dat z formátu JSON do běžných tabulek PostgreSQL, stejně jako nové operátory jsonpath pro převod JSON dat na nativní datové typy PostgreSQL. Byly navrženy nové funkce pro vytváření (JSON, JSON_SCALAR a JSON_SERIALIZE) a dotazování (JSON_EXISTS, JSON_QUERY a JSON_VALUE) dat ve formátu JSON.
  • Byly rozšířeny možnosti SQL příkazu „MERGE“, který umožňuje vytvářet podmínková SQL výrazy kombinující v jediném výrazu operace INSERT, UPDATE a DELETE. Byla přidána podpora výrazu RETURNING, který umožňuje počítat a vracet hodnoty na základě přidaných, aktualizovaných nebo odstraněných řádků. Byla implementována podpora aktualizace pohledů.
  • Byly rozšířeny možnosti nahrávání a exportu dat v dávkovém režimu. V příkazu COPY byla rychlost exportu velkých řádků zvýšena až dvakrát, bylo optimalizováno kopírování při shodě vstupní a cílové kódování, byla přidána možnost ON_ERROR, která umožňuje pokračovat v importu po chybách při vkládání dat.
  • Pro segmentované tabulky byla přidána možnost využití sloupců s unikátními identifikátory a podpora techniky optimalizace dotazů „Constraint exclusion“.
  • V mechanismu připojení externích tabulek Foreign Data Wrapper (postgres_fdw) byla zrealizována možnost přenosu na externí server poddotazů „EXISTS“ a „IN.
  • Byl implementován vestavěný multiplatformní engine pro zpracování vlastností locale „Collation“, který se používá k určení pravidel třídění a metod porovnávání s ohledem na význam symbolů (např. při řazení číselných hodnot se bere v úvahu výskyt minus a tečky před číslem a různé způsoby zápisu, a při porovnávání se nezohledňuje velikost písmen a výskyt diakritiky). Nový engine zaručuje jednotné chování při třídění výsledků dotazů, bez ohledu na to, na jaké platformě je PostgreSQL spuštěn.
  • V mechanismu logické replikace, který umožňuje vysílat na jiný server změny provedené v databázi při přidávání, odstraňování nebo aktualizaci záznamů, byl zjednodušen proces aktualizace DBMS. Zatímco dříve byl při přechodu na novou významnou verzi nutný krok odstranit sloty logické replikace a znovu synchronizovat data, nyní lze vynechat jejich odstranění. Pro odolné konfigurace byla zrealizována možnost správy přepnutí na záložní server (failover) pro logickou replikaci. Byla přidána nová utilita pg_createsubscriber pro transformaci fyzické repliky na novou logickou repliku.
  • Byla přidána nová možnost „sslnegotiation“ pro přímé vyjednávání zabezpečených TLS spojení s využitím rozšíření TLS ALPN.
  • Byla implementována předdefinovaná role pg_maintain, která poskytuje uživateli právo provádět operace související s údržbou DBMS.
  • Do nástroje pg_basebackup, používaného pro vytváření záloh databází, byla přidána podpora inkrementálních záloh. Pro rekonstrukci plné zálohy z množiny inkrementálních kopií byla navržena nová utilita pg_combinebackup. Do nástroje pg_dump byla přidána možnost „—filter“ pro výběr objektů zahrnutých do zálohy.
  • Při analýze dotazů pomocí SQL příkazu „EXPLAIN“ byla implementována výstupní doba strávená čtením a zápisem lokálních bloků při vstupu/výstupu. Do příkazu „EXPLAIN“ byly také přidány dvě nové možnosti „MEMORY“ a „SERIALIZE“, pomocí kterých lze určit velikost použité paměti a čas strávený na převodu dat pro přenos po síti.
  • Byla zajištěna indikace postupu provádění operace VACUUM s indexy.
  • Byl přidán systémový pohled pg_wait_events, který v kombinaci s pohledem pg_stat_activity umožňuje podrobněji prozkoumat důvody, proč jsou aktivní relace ve stavu čekání.

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