Po roce vývoje byla zveřejněna nová stabilní větev databázového systému PostgreSQL 15. Aktualizace pro novou větev budou vycházet po dobu pěti let až do listopadu 2027.
Hlavní novinky:
- Byla přidána podpora SQL příkazu "MERGE", který připomíná výraz "INSERT … ON CONFLICT". MERGE umožňuje vytvářet podmíněná SQL výrazy, které kombinují v jednom výrazu operace INSERT, UPDATE a DELETE. Například pomocí MERGE lze uspořádat sloučení dvou tabulek tak, že se vloží chybějící záznamy a aktualizují se existující. MERGE INTO customer_account ca USING recent_transactions t ON t.customer_id = ca.customer_id WHEN MATCHED THEN UPDATE SET balance = balance + transaction_value WHEN NOT MATCHED THEN INSERT (customer_id, balance) VALUES (t.customer_id, t.transaction_value);
- Algoritmy třídění dat v paměti a na disku byly výrazně vylepšeny. V závislosti na typu dat se v testech pozoruje zvýšení rychlosti třídění od 25 % do 400 %.
- Byla urychlena práce okenních funkcí pomocí row_number(), rank(), dense_rank() a count().
- Byla implementována možnost paralelního provádění dotazů s výrazem "SELECT DISTINCT".
- V mechanismu připojení externích tabulek Foreign Data Wrapper (postgres_fdw) byla přidána podpora asynchronních commitů vedle dříve přidané možnosti asynchronního zpracování dotazů na externí servery.
- Byla přidána možnost aplikovat algoritmy LZ4 a Zstandard (zstd) pro kompresi WAL protokolů transakcí, což při některých zátěžích umožňuje zároveň zvýšit výkon a ušetřit diskový prostor. Pro zkrácení doby obnovy po selhání byla přidána podpora předběžného získávání stránek, které se objevují v WAL protokolu.
- Do utilitiy pg_basebackup byla přidána podpora komprese souborů s zálohami na straně serveru, pomocí metod gzip, LZ4 nebo zstd. Byla poskytnuta možnost použití vlastních modulů pro archivaci, takže není třeba spouštět shellové příkazy.
- Byla přidána řada nových funkcí pro zpracování řetězců pomocí regulárních výrazů: regexp_count(), regexp_instr(), regexp_like() a regexp_substr().
- Do funkce range_agg() byla přidána možnost agregace vícerozměrných typů („multirange“).
- Byl přidán režim security_invoker, který umožňuje vytvářet pohledy vykonávané s právy volajícího uživatele, nikoli tvůrce pohledu.
- Podpora logické replikace zahrnuje filtrování řádků a určení seznamů sloupců, což umožňuje odesílateli vybrat podmnožinu dat z tabulky pro replikaci. Nová verze také zjednodušila správu konfliktů; například je nyní možné přeskočit konfliktní transakce a automaticky odpojit předplatné při zjištění chyby. Při logické replikaci je povoleno použití dvoufázových potvrzení (2PC).
- Byl přidán nový formát protokolů — jsonlog, který ukládá informace ve strukturované podobě pomocí formátu JSON.
- Správci byla poskytnuta možnost delegovat uživatelům jednotlivá oprávnění pro změnu konkrétních parametrů. konfigurace serveru PostgreSQL.
- Do utilit psql byla přidána podpora vyhledávání informací o nastaveních (pg_settings) pomocí příkazu „\dconfig“.
- Bylo zajištěno využití sdílené paměti pro shromažďování statistik o práci serveru, což umožnilo zbavit se samostatného procesu shromažďování statistik a pravidelného ukládání stavu na disk.
- Byla poskytnuta možnost používat jako výchozí ICU lokalizace „ICU Collation“, dříve mohly být výchozí lokalizace používány pouze libc lokalizace.
- Byla navržena vestavěná rozšíření pg_walinspect, které umožňuje inspekci obsahu souborů s WAL protokoly pomocí SQL dotazů.
- Pro schéma public byla všem uživatelům, kromě vlastníka DB, odvolána oprávnění k provedení příkazu CREATE.
- V PL/Python byla odstraněna podpora Pythonu 2. Byl odstraněn zastaralý exkluzivní režim zálohování („exclusive backup“).
Doplnění: Od 19:00 do 20:00 (MSK) se uskuteční webinář k diskusi změn nové verze s Pavlem Luzanovem (Postgres Professional). Pro ty, kteří se nemohou připojit k přenosu, je k dispozici záznam červnového vystoupení Pavla „PostgreSQL 15: MERGE a nejen to“ na PGConf.Russia.
Zdroj: opennet.ru
