A PostgreSQL fejlesztői csoportja bejelentette a PostgreSQL 12 kiadását, ami a legújabb verziója az open source relációs adatbázis-kezelő rendszernek.
A PostgreSQL 12-ben jelentősen javult a lekérdezések teljesítménye - különösen a nagy adathalmazok kezelése terén, továbbá a lemezterület felhasználása is optimalizálva lett.
Az új lehetőségek közül:
- a JSON Path lekérdező nyelv megvalósítása (az SQL/JSON szabvány egyik legfontosabb része);
- a közös táblás kifejezések (WITH) végrehajtásának optimalizálása;
- a generált oszlopok támogatása
A közösség továbbra is dolgozik a PostgreSQL bővíthetőségének és megbízhatóságának javításán, fejlesztve a nemzetközi támogatást, az autentikálási lehetőségeket, és egyszerűbb adminisztrációs megoldásokat kínálva.
Ebben a kiadásban megvalósították a csatlakoztatható tárolómotorok felületét, ami lehetővé teszi a fejlesztők számára, hogy saját adatmegtartási módszereket hozzanak létre.
Teljesítményjavítások
A PostgreSQL 12 lényeges teljesítményjavításokat és karbantartási eljárásokat tartalmaz az indexelési és particionálási rendszerek számára.
A B-tree indexek — a PostgreSQL szabványos indexelési típusa, az 12-es verzióban optimalizálva lettek az indexek gyakori módosításaival járó terhelésekhez. A TPC-C alapú referencia teszt a PostgreSQL 12 tekintetében átlagosan 40%-os területkihasználás-csökkenést és a lekérdezések összteljesítményének növekedését mutatta.
A partitioned táblák lekérdezései jelentős fejlesztéseken mentek keresztül, különösen az ezernél több szekcióval rendelkező táblák esetében, amelyek csak korlátozott adatcsoportokkal dolgoznak. Javult a teljesítmény az adatok beszúrásakor a partitioned táblákba az INSERT és COPY segítségével, valamint lehetőség nyílt új szekciók csatlakoztatására a futó lekérdezések blokkolása nélkül.
A PostgreSQL 12-ben további fejlesztéseket hajtottak végre az indexelés terén, amelyek a teljesítményt általánosan befolyásolják, beleértve:
- a WAL generálási költségek csökkentését a GiST, GIN és SP-GiST index típusok esetében;
- a GiST indexeken történő úgynevezett borító indexek (covering indexes, INCLUDE javaslat) létrehozásának lehetőségét;
- az ún. legjobb szomszédok (k-NN search) lekérdezésének lehetőségét a távolsági operátor (<->) és SP-GiST indexek felhasználásával;
- támogatja a leggyakoribb értékek (most-common value, MCV) statisztikai gyűjtését a CREATE STATISTICS segítségével, ami segít a legjobb lekérdezési tervek megszerzésében az olyan oszlopok használatakor, amelyek értékei egyenetlenül oszlanak el.
A JIT-kompiláció, amely az LLVM használatával jelent meg a PostgreSQL 11-ben, most alapértelmezés szerint bekapcsolva van. A JIT-kompiláció növeli a teljesítményt a WHERE klauzulákban, céllistákban, aggregátumokban és néhány belső műveletben. Elérhető, ha a PostgreSQL-t LLVM-mel fordították le, vagy ha olyan PostgreSQL csomagot használsz, amelyet LLVM engedélyezésével készítettek.
A SQL nyelv képességeinek és a szabványokkal való kompatibilitásának fejlesztése
A PostgreSQL 12-ben megjelent a JSON dokumentumok lekérdezésének lehetősége a SQL/JSON szabványban meghatározott JSON útvonal kifejezésekkel. Ezek a lekérdezések kihasználhatják a meglévő indexelési mechanizmusokat a JSONB formátumban tárolt dokumentumok számára, így hatékonyan tudják kinyerni az adatokat.
A közös táblázatos kifejezések, amelyeket WITH lekérdezésekként ismerünk, a PostgreSQL 12-ben most automatikusan végrehajthatóak helyettesítéssel, ami viszont segíthet a sok meglévő lekérdezés teljesítményének javításában. Az új verzióban a WITH lekérdezés egy része helyettesítéssel hajtható végre, ha az nem rekurzív, nincsenek mellékhatásai, és csak egyszer hivatkoznak rá a lekérdezés következő részében.
A PostgreSQL 12-ben támogatás érkezik a „generált oszlopok” számára. A SQL szabványban leírt típusú oszlop az értékét más oszlopok tartalma alapján számítja ki ugyanabban a táblázatban. Ebben a verzióban a PostgreSQL támogatja a „tárolt generált oszlopokat”, ahol a számított érték a lemezen tárolódik.
Nemzetköziesítés.
A PostgreSQL 12 kibővíti az ICU-illesztések támogatását, lehetővé téve a felhasználók számára a „nem determinisztikus illesztések” meghatározását, amelyek például lehetővé teszik az ékezet nélküli vagy kis- és nagybetű érzéketlen összehasonlításokat.
Hitelesítés
A PostgreSQL kiterjeszti a megbízható hitelesítési módszerek támogatását különböző fejlesztésekkel, amelyek további biztonságot és funkcionalitást biztosítanak. Ebben a kiadásban bemutatásra került a kliens- és szerveroldali titkosítás a GSSAPI interfészeken keresztüli hitelesítéshez, valamint a PostgreSQL képessége, hogy felismerje. szerverek LDAP, ha a PostgreSQL OpenLDAP-kal van lefordítva.
Emellett a PostgreSQL 12 most már támogatja a többfaktoros hitelesítési lehetőséget. Most a PostgreSQL szerver kérheti a klienstől egy érvényes SSL-tanúsítványt a megfelelő felhasználónévvel a clientcert=verify-full használatával, és ezt kombinálhatja egy külön hitelesítési módszer (például scram-sha-256) követelményeivel.
Adminisztráció
A PostgreSQL 12-ben lehetőség nyílik blokkolás nélküli indexújraépítés végrehajtására a REINDEX CONCURRENTLY parancs segítségével. Ez lehetővé teszi a felhasználók számára, hogy elkerüljék az adatbázis-kezelő rendszer leállását hosszú ideig tartó indexújraépítés esetén.
Emellett a PostgreSQL 12-ben lehetőség van a lapellenőrző összeg (checksum) engedélyezésére vagy letiltására olyan klaszterekben, amelyek leállított állapotban vannak, a pg_checksums parancs segítségével. Korábban a lapellenőrző összegek, amelyek segítenek ellenőrizni az adatok sértetlenségét, csak a PostgreSQL klaszter inicializálásakor érhetők el az initdb segítségével.
Forrás: linux.org.ru
