După un an de dezvoltare, a fost lansată o nouă ramură stabilă a SGBD-ului PostgreSQL 15. Actualizările pentru această nouă ramură vor fi disponibile timp de cinci ani, până în noiembrie 2027.
Noutăți principale:
- A fost adăugată suportul pentru comanda SQL „MERGE”, similară cu expresia „INSERT … ON CONFLICT”. MERGE permite crearea de expresii SQL condiționale, combinând într-o singură expresie operațiunile INSERT, UPDATE și DELETE. De exemplu, cu ajutorul MERGE se poate organiza unirea a două tabele, inserând înregistrări lipsă și actualizându-le pe cele existente. MERGE INTO customer_account ca USING recent_transactions t ON t.customer_id = ca.customer_id WHEN MATCHED THEN UPDATE SET balance = balance + transaction_value WHEN NOT MATCHED THEN INSERT (customer_id, balance) VALUES (t.customer_id, t.transaction_value);
- Algoritmii de sortare a datelor în memorie și pe disc au fost semnificativ îmbunătățiți. În funcție de tipul de date, în teste a fost observată o creștere a vitezei de sortare de la 25% până la 400%.
- Performanța funcțiilor de fereastră utilizând row_number(), rank(), dense_rank() și count() a fost accelerată.
- A fost implementată posibilitatea de a executa interogări în paralel cu expresia „SELECT DISTINCT”.
- În mecanismul de conectare la tabele externe Foreign Data Wrapper (postgres_fdw) a fost implementat suportul pentru comiterea asincronă, pe lângă funcționalitatea de procesare asincronă a interogărilor către servere externe, adăugată anterior.
- A fost adăugată posibilitatea de a aplica algoritmii LZ4 și Zstandard (zstd) pentru comprimarea jurnalelor WAL ale tranzacțiilor, ceea ce, în anumite condiții de încărcare, permite atât îmbunătățirea performanței, cât și economisirea spațiului pe disc. Pentru a reduce timpul de recuperare după o defecțiune, a fost adăugat suport pentru extragerea anticipată a paginilor prezente în jurnalul WAL.
- În utilitarul pg_basebackup a fost adăugată suportul pentru comprimarea fișierelor de rezervă pe partea de server, folosind metode cum ar fi gzip, LZ4 sau zstd. Este posibil să se utilizeze module proprii pentru arhivare, eliminând astfel necesitatea de a rula comenzi shell. serverA fost adăugată o serie de funcții noi pentru manipularea șirurilor folosind expresii regulate: regexp_count(), regexp_instr(), regexp_like() și regexp_substr().
- A fost adăugată capacitatea de a agrega tipuri multidiaporice („multirange”) în funcția range_agg().
- A fost adăugat modul security_invoker, care permite crearea de vizualizări care se execută cu drepturile utilizatorului care a invocat funcția, și nu cu cele ale creatorului vizualizării.
- A fost adăugat modul security_invoker, care permite crearea unor vizualizări ce sunt executate cu drepturile utilizatorului apelant, nu cu cele ale creatorului vizualizării.
- Pentru replicarea logică, a fost implementat suport pentru filtrarea rândurilor și pentru definirea listelor de coloane, permițându-le expeditorului să extragă un subset de date pentru replicare din tabel. În plus, noua versiune simplifică gestionarea conflictelor; de exemplu, a fost introdusă posibilitatea de a sări peste tranzacțiile conflictuale și de a dezactiva automat abonamentele în cazul detectării unei erori. La replicarea logică, utilizarea angajamentelor în două faze (2PC) este permisă.
- A fost adăugat un nou format de jurnal — jsonlog, care salvează informații într-un mod structurat, folosind formatul JSON.
- Administratorului îi este oferită posibilitatea de a delega utilizatorilor anumite autorități pentru modificarea unor parametri specifici. al configurației serverului PostgreSQL.
- În utilitarul psql a fost adăugat suport pentru căutarea informațiilor despre setări (pg_settings) folosind comanda „\dconfig”.
- A fost asigurat utilizarea memoriei partajate pentru acumularea statisticilor despre funcționarea serverului, ceea ce a permis eliminarea unui proces separat pentru colectarea statisticilor și resetarea periodică a stării pe disc.
- A fost oferită posibilitatea de a utiliza, în mod implicit, localele ICU „ICU Collation”; anterior, ca locație implicită se puteau folosi doar localele libc.
- A fost propusă extensia încorporată pg_walinspect, care permite inspectarea conținutului fișierelor cu jurnale WAL prin intermediul interogărilor SQL.
- Pentru schema public, toate utilizatorii, cu excepția proprietarului bazei de date, au avut revocate autorizațiile de a executa comanda CREATE.
- În PL/Python a fost eliminat suportul pentru Python 2. A fost eliminat modul exclusiv de rezervare („exclusive backup”).
Atenționare: Între orele 19:00 și 20:00 (MSK) va avea loc un webinar de discuție despre modificările noii versiuni cu Pavel Luzanov (Postgres Professional). Pentru cei care nu pot să se alăture emisiunii, este disponibilă înregistrarea prezentării din iunie a lui Pavel „PostgreSQL 15: MERGE și nu numai” pe PGConf.Russia.
Sursa: opennet.ro
