
A PostgreSQL Global Development Group hivatalosan is kiadta a PostgreSQL 18-at, amely a világ egyik legfejlettebb nyílt forráskódú relációs adatbázis-kezelőjének (RDBMS) legújabb főverziója. Az új kiadás fő fókuszában a teljesítménynövelés, a frissítések egyszerűsítése, valamint a biztonsági és fejlesztői eszközök bővítése áll. A PostgreSQL 18 legnagyobb újdonsága az aszinkron I/O alrendszer, amely akár háromszoros teljesítménynövekedést hoz bizonyos műveleteknél. A frissítési folyamat is egyszerűbb lett, mivel a tervezői statisztikák megőrződnek főverzióváltáskor, és a pg_upgrade gyorsabb, párhuzamos és hatékonyabb működést kínál. A lekérdezések sebességét új index-optimalizálások, „skip scan” keresések és továbbfejlesztett join algoritmusok növelik. Emellett a rendszer biztonságosabb és rugalmasabb lett az OAuth 2.0 hitelesítéssel, az MD5 elavulttá nyilvánításával, valamint a fejlesztőknek új eszközöket ad például virtuális generált oszlopok és UUIDv7 támogatás formájában.
A fentieken kívül a PostgreSQL 18 további új funkciókat is tartalmaz, amelyek részletes bemutatása megtalálható a kiadási jegyezetben.
Az újdonságokról
Akár háromszoros I/O teljesítmény az új aszinkron alrendszerrel
Korábban a PostgreSQL az operációs rendszer előzetes olvasási (readahead) mechanizmusára támaszkodott az adatok gyorsabb eléréséhez. Mivel azonban az operációs rendszerek nem rendelkeznek betekintéssel az adatbázis-specifikus hozzáférési mintákba, nem mindig tudták előre jelezni, hogy mely adatokra lesz szükség, ami sok esetben alulteljesítéshez vezetett.
A PostgreSQL 18 egy új aszinkron I/O (AIO) alrendszert vezet be ennek a korlátnak a megoldására. Az AIO lehetővé teszi, hogy a PostgreSQL több I/O kérést indítson párhuzamosan, ahelyett hogy sorban kivárná mindegyik befejeződését. Ez kibővíti a meglévő readahead funkciókat, és növeli az áteresztőképességet. A PostgreSQL 18-ban támogatott AIO-műveletek közé tartozik a szekvenciális olvasás (sequential scan), a bitmap heap scan és a vacuum. Tesztelések során egyes esetekben akár háromszoros teljesítménynövekedést is elértek.
Az új io_method beállítás lehetővé teszi, hogy válasszunk az AIO-módszerek közül (például worker, io_uring), vagy megtartsuk a PostgreSQL jelenlegi viselkedését a sync beállítással. Az AIO bevezetésével több paraméter is finomhangolható, amelyekről részletesen a dokumentációban található leírás.
Gyorsabb frissítések, jobb teljesítmény frissítés után
A PostgreSQL egyik kulcsfontosságú funkciója a statisztikák gyűjtése és tárolása, amelyek segítik a legoptimálisabb lekérdezési terv kiválasztását. A PostgreSQL 18 előtt ezek a statisztikák nem öröklődtek főverzió-frissítéskor, ami jelentős teljesítménycsökkenést okozhatott a lekérdezéseknél addig, amíg az ANALYZE folyamat be nem fejeződött. A PostgreSQL 18 lehetővé teszi a tervezői statisztikák megőrzését főverzió-frissítéskor, így a frissített fürt gyorsabban eléri a várt teljesítményt.
Ezenkívül a pg_upgrade eszköz is számos fejlesztést kapott, például gyorsabb frissítést tesz lehetővé, ha az adatbázis sok objektumot (táblákat, szekvenciákat) tartalmaz. Mostantól a pg_upgrade a --jobs kapcsoló alapján párhuzamosan is elvégezheti az ellenőrzéseket, valamint bevezetésre került a --swap kapcsoló, amely másolás, klónozás vagy linkelés helyett a frissítési könyvtárakat cseréli fel.
Lekérdezési és általános teljesítményjavítások
A PostgreSQL 18 további gyorsulást biztosít a lekérdezések számára olyan funkciókkal, amelyek automatikusan gyorsabbá teszik a munkaterheléseket. Ez a kiadás bevezeti a „skip scan” kereséseket a többoszlopos B-tree indexeken, amelyek felgyorsítják azokat a lekérdezéseket, ahol egy vagy több előtag-indexoszlopra nem szerepel = feltétel. Emellett optimalizálhatók azok a lekérdezések is, amelyek OR feltételeket tartalmaznak a WHERE záradékban, így jelentősen gyorsabb végrehajtást tesznek lehetővé.
Számos fejlesztés történt a táblacsatlakoztatások (JOIN-ok) tervezésében és végrehajtásában is: javult a hash join teljesítménye, a merge join pedig képes inkrementális rendezéseket használni. A PostgreSQL 18 mostantól támogatja a párhuzamos GIN-index építést, így a B-tree és a BRIN indexek mellett ez a típus is csatlakozott a képességhez.
A kiadás bővíti a hardveres gyorsítás támogatását is, beleértve az ARM NEON és SVE CPU-intrinsic műveleteket a popcount függvényhez, amelyet például a bit_count és más belső funkciók használnak.
A fejlesztői élmény bővítése
A PostgreSQL 18 bevezeti a virtuális generált oszlopokat, amelyek az értékeket a lekérdezés idején számítják ki, ahelyett hogy tárolnák őket. Ez mostantól az alapértelmezett lehetőség a generált oszlopok esetében. Továbbá a tárolt generált oszlopok immár logikai replikációval is szinkronizálhatók.
Ez a kiadás lehetővé teszi a RETURNING záradékban a korábbi (OLD) és az aktuális (NEW) értékek elérését az INSERT, UPDATE, DELETE és MERGE parancsok során. A PostgreSQL 18 továbbá bevezeti az uuidv7() függvényt, amellyel időbélyeg-alapú, véletlenszerű UUID-ket lehet generálni, amelyek támogatják a hatékonyabb gyorsítótárazási stratégiákat. Emellett az uuidv4() mostantól aliasa a gen_random_uuid() függvénynek.
Újdonságként a PostgreSQL 18 támogatja az időbeli megszorításokat (temporal constraints), amelyek időintervallumokra vonatkoznak: a PRIMARY KEY és UNIQUE kulcsokhoz a WITHOUT OVERLAPS záradék használható, míg a FOREIGN KEY kulcsokhoz a PERIOD záradék került bevezetésre.
Végül könnyebb lett külső táblák sémájának definiálása: a CREATE FOREIGN TABLE ... LIKE parancs lehetővé teszi, hogy egy helyi tábla definícióját alapul véve hozzuk létre a külső táblát.
Szövegfeldolgozás fejlesztése
A PostgreSQL 18 új funkciókkal könnyíti és gyorsítja a szövegfeldolgozást. Az új PG_UNICODE_FAST összehasonlítás teljes Unicode-szemantikát biztosít a kis- és nagybetű-átalakításokhoz, miközben gyorsítja az összehasonlításokat. Ez kiterjed a kis- és nagybetűs sztring-összehasonlító függvényekre, valamint az új casefold függvényre, amely kis- és nagybetűfüggetlen összehasonlításokat tesz lehetővé.
A PostgreSQL 18 emellett támogatja a LIKE összehasonlításokat nem-determinisztikus kollációkat használó szövegeknél is, ami egyszerűsíti az összetettebb mintakereséseket. A teljes szöveges keresés mostantól a fürt alapértelmezett kollációs szolgáltatóját használja, nem pedig mindig a libc-t. Emiatt a pg_upgrade futtatása után szükség lehet az összes teljes szöveges keresési és pg_trgm index újraépítésére.
Hitelesítés és biztonsági funkciók
A PostgreSQL 18 bevezeti az OAuth alapú hitelesítést, amely lehetővé teszi a felhasználók számára az OAuth 2.0 mechanizmusokon keresztüli azonosítást PostgreSQL-bővítmények támogatásával. Emellett a PostgreSQL 18 támogatja a FIPS-mód ellenőrzését, valamint az új ssl_tls13_ciphers paramétert, amellyel a szerveroldali TLS v1.3 titkosítási csomagok konfigurálhatók.
Ez a kiadás elavultnak minősíti az md5 jelszóalapú hitelesítést, amelyet a jövőben teljesen eltávolítanak. Ahol jelszóalapú hitelesítésre van szükség, ott a SCRAM használata ajánlott. A PostgreSQL 18 támogatja a SCRAM passthrough hitelesítést is a postgres_fdw és dblink esetében, lehetővé téve a távoli PostgreSQL példányokhoz való azonosítást. Továbbá a pgcrypto bővítmény mostantól támogatja a SHA-2 titkosítást jelszó-hash-eléshez.
Replikáció
A PostgreSQL 18 támogatja a logikai replikáció írási ütközéseinek naplózását, valamint ezek megjelenítését a pg_stat_subscription_stats nézetben. Az CREATE SUBSCRIPTION parancs mostantól alapértelmezetten párhuzamos streamelést használ a tranzakciók alkalmazására, ami javíthatja a teljesítményt.
Az új pg_createsubscriber segédprogram rendelkezik --all kapcsolóval, amellyel egyetlen paranccsal létrehozhatók a logikai replikák az adott példány összes adatbázisához. A PostgreSQL 18 lehetővé teszi továbbá az üresen álló replikációs helyek automatikus eltávolítását, így megelőzhető a túl sok naplófájl (write-ahead log, WAL) felhalmozódása a kiadó oldalon.
Karbantartás és megfigyelhetőség
A PostgreSQL 18 továbbfejlesztette a vacuum stratégiáját: mostantól proaktívan több oldalt fagyaszt le a rendszer a szokásos takarítások (vacuum) során, ezzel csökkenti a terhelést, és segít azokban a helyzetekben, amikor agresszívabb tisztításra van szükség.
A PostgreSQL 18 részletesebb információkat ad az EXPLAIN kimenetben, amely a lekérdezési tervek végrehajtásáról szolgáltat adatokat. Mostantól az EXPLAIN ANALYZE automatikusan megjeleníti, hogy hány pufferhez (a PostgreSQL adatkezelésének alapegysége) történt hozzáférés. Ezen felül az EXPLAIN ANALYZE kimenetben láthatóvá válik az indexkeresések száma egy indexscan során, míg az EXPLAIN ANALYZE VERBOSE kimenet tartalmazza a CPU, WAL és átlagos olvasási statisztikákat is.
A PostgreSQL 18 több adatot közöl a pg_stat_all_tables nézetben a vacuum és a kapcsolódó műveletek során eltöltött időről, valamint per-kapcsolat alapon statisztikát ad az I/O és a WAL használatról is.
Egyéb jelentős változások
A PostgreSQL 18-ban létrehozott új adatbázisokban az initdb alapértelmezetten bekapcsolja az oldalszintű ellenőrzőösszegeket (page checksums). Ez hatással lehet a nem ellenőrzőösszeggel inicializált fürtök frissítésére, ilyenkor a pg_upgrade használatakor szükség van új PostgreSQL 18 fürt létrehozására a --no-data-checksums opcióval.
A PostgreSQL 18 emellett új verziót vezet be a PostgreSQL hálózati protokollból: a 3.2-es verziót, amely az első új protokollverzió a PostgreSQL 7.4 (2003) óta. A libpq továbbra is alapértelmezetten a 3.0-s verziót használja, ugyanakkor a kliensalkalmazások (pl. driverek, kapcsolatkezelők, proxyk) elkezdhetik támogatni az új verziót.
További funkciók
A PostgreSQL 18 számos egyéb új funkciót és fejlesztést is tartalmaz, amelyek hasznosak lehetnek különböző felhasználási esetekben. A teljes lista a változásokkal és újdonságokkal a kiadási megjegyzésekben található.
A PostgreSQL 18 tehát nem csupán teljesítménynövekedést hoz, hanem jelentősen csökkenti a frissítések költségeit, új biztonsági megoldásokat kínál, valamint tovább bővíti a fejlesztők eszköztárát.
A PostgreSQL egy ingyenes és nyílt forráskódú relációs adatbázisrendszerek egyike. Olyan szoftver, amely lehetővé teszi adatok tárolását, kezelését és lekérdezését szervezett és hatékony módon. A PostgreSQL rövidítése "Postgres", és gyakran említik így a közösségben.
Ez a rendszer számos jelentős tulajdonsággal és előnnyel rendelkezik, amelyek magukban foglalják:
Nyílt forráskód: A PostgreSQL nyílt forráskódú, ami azt jelenti, hogy bárki szabadon használhatja, módosíthatja és terjesztheti a saját projektekben vagy alkalmazásaikban.
Erőteljes és teljes funkciók: A PostgreSQL számos fejlett adatbázis funkciót és funkcionális lehetőséget kínál, beleértve a tranzakciós kezelést, az indexelést, a kapcsolati adatbázis-kezelést és a szöveges keresést.
Kiterjeszthetőség: Lehetőség van saját függvények, operátorok és adattípusok hozzáadására a PostgreSQL-hez, ami a rendszer alkalmazkodását az egyedi igényekhez teszi lehetővé.
Teljesítmény és megbízhatóság: A PostgreSQL nagyon jó teljesítményt nyújt nagy adatbázisok és magas terhelésű környezetek esetén is. Támogatja a tranzakciókat és a párhuzamos lekérdezéseket, valamint különböző biztonsági intézkedéseket is kínál.
Közösségi támogatás: A PostgreSQL népszerűségét és fejlesztését egy aktív közösség segíti elő, amely folyamatosan frissíti és fejleszti a rendszert.
A PostgreSQL sokféle alkalmazásban használható, ideértve webalkalmazásokat, vállalati rendszereket, adattárházakat és sok más területet, ahol hatékony adatbázis-kezelésre van szükség.
