PostgreSQL 14 DBMS kiadás

Egy évnyi fejlesztés után megjelent a PostgreSQL 14 DBMS új stabil ága. Az új ághoz tartozó frissítések öt éven keresztül, 2026 novemberéig jelennek meg.

Főbb újítások:

  • Támogatás hozzáadva a JSON-adatok tömbszerű kifejezésekkel történő elérésére: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM teszt WHERE részletek['attributes']['size'] = '"közepes"';

    Hasonló szintaxis van megvalósítva a hstore típus által biztosított kulcs/érték adatokhoz. Ezt a szintaxist eredetileg egy univerzális keretrendszerrel valósították meg, amely a jövőben más típusokhoz is használható lesz. Példa a hstore típusra: INSERT INTO mytable VALUES ('a=>b, c=>d'); SELECT h['a'] FROM mytable; UPDATE mytable SET h['c'] = 'új';

  • A tartományok meghatározására szolgáló típuscsalád új „multirange” típusokkal bővült, amelyek lehetővé teszik az átfedő értéktartományok rendezett listájának megadását. Az egyes meglévő tartománytípusok mellett saját többtartományú típus is javasolt, például az „int4range” típus az „int4multirange”, a „daterange” típus pedig a „datemultirange”-nak felel meg. Az új típusok használata leegyszerűsíti a tartományok összetett sorozatait manipuláló lekérdezések tervezését. SELECT '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(számtartomány(1.0, 14.0), számtartomány(20.0, 25.0));
  • A nagy terhelésű, nagyszámú kapcsolatot feldolgozó rendszerek teljesítményének javítása érdekében optimalizálásokat hajtottak végre. Egyes teszteknél kétszeres teljesítménynövekedés figyelhető meg.
  • Javult a B-fa indexek hatékonysága, és megoldódott az index növekedésével kapcsolatos probléma, amikor a táblákat gyakran frissítik.
  • Hozzáadott támogatás a kérések csővezetékes továbbításának kliensoldali (libpq szinten megvalósított) módjához, amely lehetővé teszi a nagyszámú kis írási művelet (INSERT/UPDATE/DELETE) végrehajtásához kapcsolódó adatbázis-forgatókönyvek jelentős felgyorsítását azáltal, hogy elküldi a következő kérést anélkül, hogy megvárná az előző eredményét. A mód a hosszú csomagkézbesítési késleltetésű kapcsolatokon is felgyorsítja a munkát.
  • Továbbfejlesztett képességek több PostgreSQL-kiszolgálót magában foglaló elosztott konfigurációkhoz. A logikai replikáció megvalósítása során immár lehetővé válik a folyamatban lévő tranzakciók streaming módban történő elküldése, ami jelentősen javíthatja a nagy tranzakciók replikációjának teljesítményét. Emellett a logikai replikáció során kapott adatok logikai dekódolása is optimalizálásra került.
  • A külső táblák összekapcsolásának mechanizmusa Az idegen adatcsomagoló (postgres_fdw) kiegészítette a párhuzamos lekérdezésfeldolgozás támogatását, amely jelenleg csak más PostgreSQL-kiszolgálókhoz való csatlakozáskor alkalmazható. A postgres_fdw emellett támogatja az adatok külső táblákhoz kötegelt módban történő hozzáadását, valamint a particionált táblák importálásának lehetőségét az „IMPORT FOREIGN SCHEMA” direktíva megadásával.
  • A VACUUM művelet (szemétgyűjtés és lemeztároló csomagolás) megvalósítását optimalizáltuk. Egy vészhelyzeti tisztítási mód került hozzáadásra, amely kihagyja a nem alapvető tisztítási műveleteket, ha létrejönnek a tranzakcióazonosító körülményei. Csökkentett többletköltség az indexek B-Tree formátumú feldolgozásakor. Jelentősen felgyorsult az adatbázis működéséről statisztikát gyűjtő „ANALYZE” művelet végrehajtása.
  • Hozzáadtuk a TOAST rendszerben használt tömörítési módszer konfigurálásának lehetőségét, amely a nagy adatok, például szövegblokkok vagy geometriai információk tárolásáért felelős. A pglz tömörítési módszer mellett a TOAST most már használhatja az LZ4 algoritmust is.
  • Bővültek a DBMS működésének felügyeletére szolgáló eszközök. Nézetek hozzáadva a COPY-parancsok (pg_stat_progress_copy), a replikációs helyek statisztikáinak (pg_stat_replication_slots) és a WAL-tranzakciós naplóval kapcsolatos tevékenységek (pg_stat_wal) nyomon követéséhez. A compute_query_id függvény hozzáadásra került, amely lehetővé teszi a különböző alrendszerek számára, mint például a pg_stat_activity és EXPLAIN VERBOSE, hogy nyomon kövessék a kéréseket úgy, hogy minden kéréshez egyedi azonosítót rendelnek.
  • A lekérdezéstervezőt optimalizálták a lekérdezések párhuzamos feldolgozásának javítása és a szekvenciális rekordvizsgálati műveletek egyidejű végrehajtása, a lekérdezések párhuzamos végrehajtása PL/pgSQL-ben a „RETURN QUERY” paranccsal, valamint a lekérdezések párhuzamos végrehajtása a „ FRISSÍTSE MEG A MATERIALIZÁLT NÉZET”. A ciklikus beágyazott egyesítések (csatlakozás) teljesítményének javítása érdekében további gyorsítótárazás támogatását is megvalósították.
  • A speciális statisztikák mostantól a kifejezések optimalizálására használhatók, a növekményes rendezés pedig az ablakfunkciók optimalizálására.
  • A tárolt eljárások, amelyek lehetővé teszik a tranzakciók kódblokkokban történő kezelését, mostantól támogatják a visszatérési adatok "OUT" paraméterekkel történő meghatározását.
  • A dátum_bin függvény hozzáadva az időbélyegértékek kerekítéséhez egy meghatározott intervallum szerint. SELECT date_bin('15 perc', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • Az SQL szabványban definiált SEARCH és CYCLE kifejezések hozzáadva, hogy megkönnyítsék a ciklusok rendezését és azonosítását a rekurzív közös táblázatkifejezésekben (CTE). WITH REKURSÍV keresési_fa(azonosító, hivatkozás, adatok) AS ( SELECT t.id, t.link, t.data FROM t UNION ALL SELECT t.id, t.link, t.data FROM 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édprogramban a parancsok automatikus kiegészítése tabulátorral javult, a „\df” parancshoz hozzáadták a függvényargumentumok megjelenítésének lehetőségét, a megjelenített statisztikák pedig a „\dX” parancsra bővültek.
  • Lehetőség van csak olvasási vagy írási jogosultságok hozzárendelésére a felhasználókhoz. A jogosultságok beállíthatók az egyes táblákhoz, nézetekhez és sémákhoz a pg_read_all_data és pg_write_all_data előre meghatározott szerepkörök használatával. GRANT pg_read_all_data TO user1;
  • Az új telepítések alapértelmezés szerint az md256 helyett SCRAM-SHA-5-ot használó jelszavas hitelesítést használnak (a postgresql.conf generálásakor a „password_encryption” paraméter most „scram-sha-256”-ra van állítva).

Forrás: opennet.ru

Hozzászólás