Megjelent a PostgreSQL 14 adatbázis-kezelő rendszer.

Az egy éves fejlesztés után megjelent a PostgreSQL 14 új stabil ága. Az új ágon frissítések öt éven keresztül jelennek meg, 2026 novemberéig.

Főbb újítások:

  • Hozzáadva a JSON adatainak elérésére vonatkozó támogatás, amely a tömbökkel való munkát idézi: SELECT ('{"postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE details['attributes']['size'] = 'medium';

    Hasonló szintaxis vonatkozik az érték-pár formátumú adatokra is, amelyeket az hstore típus biztosít. E szintaxis eredetileg egy univerzális keretrendszer segítségével került megvalósításra, amely a jövőben más típusokhoz is felhasználható. Példa a hstore típusra: INSERT INTO mytable VALUES ('a=>b, c=>d'); SELECT h['a'] FROM mytable; UPDATE mytable SET h['c'] = 'new';

  • Az új típuscsalád kiterjeszti a tartományok meghatározására szolgáló lehetőségeket az új multirange típusokkal, amelyek lehetővé teszik a nem átfedő tartományok rendezett listáinak megadását. Minden meglévő range típushoz saját multirange típus tartozik, például az int4range típushoz az int4multirange, a datarangehoz pedig a datemultirange. Az új típusok alkalmazása egyszerűsíti a bonyolult tartománysorozatokkal való lekérdezések megfogalmazását. SELECT '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Optimalizálásokat végeztek a nagy terhelésű rendszerek teljesítményének javítása érdekében, amelyek nagyszámú kapcsolódást kezelnek. Egyes tesztekben a teljesítmény kétszeres növekedését figyelték meg.
  • Növelték a B-tree indexek hatékonyságát, és megoldották a táblák gyakori frissítése esetén a növekvő indexek problémáját.
  • Hozzáadva a kliens oldalon működő (libpq szinten valósított) pipeline mód, amely jelentősen felgyorsítja az adatbázissal kapcsolatos munkafolyamatokat, amelyek nagy számú kis írási műveletet (INSERT/UPDATE/DELETE) igényelnek azáltal, hogy a következő lekérdezést a korábbi eredménye nélkül küldi el. Ez a mód a nagy késleltetésű kapcsolatok esetén is segít a munkafolyamatok felgyorsításában.
  • Bővítették a lehetőségeket a több példányos konfigurációk számára, amelyek több szerverek PostgreSQL. A logikai replikáció megvalósításában lehetőség nyílt a folyamatban lévő tranzakciók folyamatos átvitelére, ami jelentősen növeli a nagy tranzakciók replikációs teljesítményét. Ezen kívül optimalizálták az adatlogikai dekódolását, amely az logikai replikáció során érkezik.
  • A külső táblák csatlakoztatása érdekében létrehozott Foreign Data Wrapper (postgres_fdw) mechanizmusába párhuzamos lekérdezéskezelés támogató funkciót építettek be, amely egyelőre csak más PostgreSQL szerverekhez való csatlakozáskor alkalmazható. A postgres_fdw-hoz ezen kívül lehetőségek kerültek be, a külső táblákba történő adatok batch módban történő hozzáadására és a szekcionált táblák importálására a „IMPORT FOREIGN SCHEMA” utasítás megadásával.
  • Optimalizálásokat végeztek a VACUUM (szemétgyűjtés és tárolócsomagolás) művelet végrehajtásán. Bevezetésre került egy vészhelyzeti tisztítási mód („emergency mode”), amely figyelmen kívül hagyja a lényegtelen tisztítási műveleteket, ha a tranzakciós azonosítók második körére terelődnek (transaction ID wraparound). Csökkentették a B-Fa formátumú indexek feldolgozásának költségeit. Jelentősen meggyorsult az „ANALYZE” művelet végrehajtása, amely statisztikákat gyűjt az adatbázis működéséről.
  • Lehetőséget biztosítottak a rendszerben alkalmazott tömörítési módszerek beállítására a TOAST-nál, amely a nagyméretű adatok, például szöveges blokkok vagy geometriai adatok tárolásáért felel. A TOAST-ban a pglz tömörítési módszer mellett az LZ4 algoritmus is használható.
  • Bővítették az adatbázis-kezelő rendszer működésének figyelemmel kísérésére szolgáló eszközöket. Új nézetek kerültek bevezetésre a „COPY” parancs végrehajtásának előrehaladásának nyomon követésére (pg_stat_progress_copy), a replikációs slotokkal kapcsolatos statisztikákhoz (pg_stat_replication_slots) és a tranzakciós WAL naplóval kapcsolatos aktivitásra (pg_stat_wal). Bevezetésre került a compute_query_id funkció, amely lehetővé teszi a lekérdezések egyedi azonosítójának nyomon követését a pg_stat_activity és az EXPLAIN VERBOSE rendszerekben.
  • A lekérdezés-tervezőbe beépített optimalizálások javítják a párhuzamos lekérdezésfeldolgozást, lehetővé téve a rekordok soros beolvasásának párhuzamos végrehajtását, a PL/pgSQL lekérdezések párhuzamos indítását a „RETURN QUERY” paranccsal, és a lekérdezések párhuzamos futtatását a „REFRESH MATERIALIZED VIEW”-ben. A ciklikus beágyazott összekapcsolások (join) teljesítményének növelése érdekében megvalósították a kiegészítő gyorsítótárazás támogatását.
  • Az kifejezések optimalizálásához most már használható a kiterjesztett statisztika, míg az ablakfüggvények optimalizálásához az inkrementális rendezés.
  • Az eljárásokban, amelyek lehetővé teszik a tranzakciók kezelését kódblokkokban, implementálták a visszaadott adatok meghatározásának támogatását „OUT” paraméterek segítségével.
  • Hozzáadva a date_bin függvény az időbélyeg típusú értékek kerekítéséhez a megadott intervallumnak megfelelően. SELECT date_bin('15 minutes', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • A SQL szabványban meghatározott SEARCH és CYCLE kifejezések egyszerűsítik a rendezést és a ciklusok azonosítását a rekurzív általános táblázati kifejezések (Common Table Expression, CTE) során. 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;
  • A psql segédeszközben javult a parancsok tabulátorral történő automatikus kiegészítése, a '\df' parancsban lehetővé vált a függvények argumentumainak megjelenítése, és a '\dX' parancsban kibővült a megjelenített statisztika.
  • Lehetőség nyílik a felhasználók részére olyan jogosultságok kiadására, amelyek csak olvasást vagy csak írást tesznek lehetővé. A jogosultságok egyes táblákhoz, nézetekhez és sémákhoz rendelhetők a pg_read_all_data és pg_write_all_data előre definiált szerepkörök segítségével. GRANT pg_read_all_data TO user1;
  • Az új telepítések esetében alapértelmezetten biztosítják a jelszóalapú hitelesítést a SCRAM-SHA-256 módszer alkalmazásával az md5 helyett (a parameter 'password_encryption' a postgresql.conf generálásakor mostantól 'scram-sha-256' értékre van állítva).

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster