A fejlesztés egy éve után megjelent a PostgreSQL 17 új stabil ága. A frissítések az új ághoz öt éven keresztül, 2029 novemberéig érkeznek. A PostgreSQL 12.x, a legöregebb támogatott ág támogatása 2023. november 14-én megszűnik.
Főbb újítások:
- A VACUUM művelet (a lom eltakarítása, tisztítás és a lemeztároló csomagolása) során egy új adatszerkezet lép életbe, amely akár 20-szor kevesebb memóriát igényel. Az új struktúrára való áttérés gyorsabbá tette a VACUUM műveletek végrehajtását, és csökkentette a közösen használt erőforrások fogyasztását.
- Folytatódott a bemeneti/kimeneti teljesítmény optimalizálása. A késleltetett írási napló (WAL) kezelésére kifejlesztett kódjavítások révén akár a kétszeresére nőtt a felírási műveletek áteresztőképessége nagy számú egyidejű kérés esetén. Javasoltak egy új stream bemeneti/kimeneti interfészt, amely felgyorsította az adatok sorozatos feldolgozását a táblákban, és gyorsabbá tette a statisztika frissítését a lekérdezéstervező számára az ANALYZE művelet végrehajtása után.
- Növelték az IN kifejezésekkel végzett lekérdezések teljesítményét, ha B-tree struktúrára alapozott indexeket használnak. Megvalósították a BRIN (Block Range Index) indexek párhuzamos építésének lehetőségét. A lekérdezéstervezőben optimalizálták a „NOT NULL” ellenőrzéseket, és felgyorsították a közös táblázati kifejezések (Common Table Expression, CTE) SQL „WITH” utasítással történő meghatározását. Biztosították a vektorizált processzor utasítások (SIMD) használatát bizonyos számítások gyorsítására, például a bit_count funkció felgyorsításához az AVX-512 utasításokat alkalmazzák.
- Megvalósították az új funkciók támogatását a JSON formátum kezelésére, amelyeket az SQL/JSON szabvány határozott meg. Hozzáadták a JSON-TABLE funkciót, amely lehetővé teszi a JSON formátumból a hagyományos PostgreSQL táblákra való átalakítást, valamint új jsonpath operátorokat a JSON adatok PostgreSQL-re jellemző adattípusokra való átalakításához. Javasoltak új funkciókat az adatok JSON formátumban történő létrehozására (JSON, JSON_SCALAR és JSON_SERIALIZE) és lekérdezésére (JSON_EXISTS, JSON_QUERY és JSON_VALUE).
- A SQL command «MERGE» capabilities have been expanded, allowing the creation of conditional SQL expressions that combine INSERT, UPDATE, and DELETE operations in one statement. Support for the RETURNING clause has been added, which allows calculating and returning values based on added, updated, or deleted rows. Support for updating views has been implemented.
- The capabilities for batch data loading and exporting have been expanded. The COPY command has seen its export speed for large rows doubled, copying has been optimized for matching source and target encodings, and an ON_ERROR option has been added, allowing import to continue after data insertion errors.
- For partitioned tables, the ability to use columns with unique identifiers and support for the query optimization technique «Constraint exclusion» has been added.
- The foreign table connection mechanism Foreign Data Wrapper (postgres_fdw) has implemented the ability to pass to external szerver subqueries «EXISTS» and «IN.
- An integrated platform-independent engine for locale property «Collation» handling has been implemented, used to set sorting rules and comparison methods considering character semantics (for example, when sorting numeric values, the presence of minus and decimal points before the number and different writing styles are taken into account, while case sensitivity and diacritical marks are ignored during comparison). The new engine guarantees consistent behavior when sorting query results, regardless of the platform on which PostgreSQL is run.
- In the logical replication mechanism, allowing changes made to the database during record additions, deletions, or updates to be transmitted to another server, the process of updating the DBMS has been simplified. Previously, when transitioning to a new significant release, it was necessary to delete logical replication slots and resynchronize data, but now it can be done without deleting slots. For fault-tolerant configurations, the ability to manage failover switching to a standby server for logical replication has been implemented. A new utility pg_createsubscriber has been added to convert a physical replica into a new logical replica.
- Új „sslnegotiation” opció került hozzáadásra a védett TLS-kapcsolatok közvetlen tárgyalásához az ALPN TLS-kiterjesztés használatával.
- Megvalósult a pg_maintain előre definiált szerepkör, amely jogot biztosít a felhasználónak az adatbázis-kezelő rendszert érintő karbantartási műveletek végrehajtására.
- A pg_basebackup segédprogramhoz, amelyet az adatbázisok biztonsági mentésére használnak, hozzáadták a helyi biztonsági másolatok támogatását. A teljes biztonsági másolat rekonstrukciójához egy új pg_combinebackup segédprogramot ajánlottak. A pg_dump segédprogramhoz a „—filter” opció került bevezetésre az exportálásra szánt objektumok kiválasztására.
- A SQL-parancs „EXPLAIN” használatával végzett lekérdezéselemzés során megvalósult a helyi blokkok olvasására és írására fordított idő megjelenítése bemenet/kimenet esetén. Az „EXPLAIN” parancshoz két új opciót, a „MEMORY”-t és a „SERIALIZE”-t is hozzáadták, amelyek segítségével meghatározható a felhasznált memória mérete és az adatátvitelhez szükséges átalakításra fordított idő.
- A VACUUM művelet végrehajtása során biztosított a folyamat előrehaladásának jelzése az indexekkel.
- Hozzáadásra került a pg_wait_events rendszerkép, amely a pg_stat_activity képpel együtt lehetővé teszi az aktív munkamenetek várakozásának okainak részletesebb vizsgálatát.
Forrás: opennet.ru
