Lansarea SGBD-ului PostgreSQL 14

După un an de dezvoltare, a fost lansată o nouă ramură stabilă a SGBD-ului PostgreSQL 14. Actualizările pentru noua ramură vor fi disponibile timp de cinci ani, până în noiembrie 2026.

Noutăți principale:

  • A fost adăugată suportul pentru accesarea datelor JSON prin expresii asemănătoare cu lucrul cu array-uri: SELECT (‘{ "postgres": { "release": 14 }}’::jsonb)[‘postgres’][‘release’]; SELECT * FROM test WHERE details[‘attributes’][‘size’] = ‘"medium"‘;

    Un sintax similar a fost implementat și pentru datele în format cheie/valoare, furnizate de tipul hstore. Acest tip de sintax a fost inițial implementat folosind un cadru universal, care poate fi folosit în viitor și pentru alte tipuri. Exemplu pentru tipul hstore: INSERT INTO mytable VALUES (‘a=>b, c=>d’); SELECT h[‘a’] FROM mytable; UPDATE mytable SET h[‘c’] = ‘new’;

  • Familia de tipuri pentru definirea intervalelor a fost extinsă cu noi tipuri „multirange”, care permit stabilirea unor liste ordonate de intervale de valori neintersectate. Pe lângă fiecare tip de range existent, a fost propus propriul tip multirange, de exemplu, tipul „int4range” corespunde „int4multirange”, iar „daterange” - „datemultirange”. Utilizarea noilor tipuri simplifică formularea cererilor care manipulează cu secvențe complexe de intervale. SELECT ‘{[3,7), [8,9)}’::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Au fost realizate optimizări pentru îmbunătățirea performanței sistemelor cu încărcare mare, care gestionează un număr mare de conexiuni. În unele teste, s-a observat o creștere de două ori a performanței.
  • A fost crescută eficiența funcționării indicilor B-tree și a fost rezolvată problema creșterii indicilor în cazul actualizărilor frecvente ale tabelelor.
  • A fost adăugată suportul pentru modul de transmisie a cererilor pe partea clientului (implementat la nivelul libpq) în modul de conductă (pipeline), permițând accelerarea semnificativă a scenariilor de lucru cu BD legate de efectuarea unui număr mare de operațiuni mici de scriere (INSERT/UPDATE/DELETE) prin trimiterea următoarei cereri fără a aștepta rezultatul celei anterioare. Modului ajută, de asemenea, să accelereze lucrul în conexiuni cu întârzieri mari în livrarea pachetelor.
  • Au fost extinse capacitățile pentru configurații distribuite, inclusiv mai multe servere PostgreSQL. În implementarea replicării logice a apărut posibilitatea de a trimite în mod simultan tranzacții aflate în desfășurare, ceea ce permite îmbunătățirea semnificativă a performanței replicării tranzacțiilor mari. De asemenea, decodificarea logică a datelor primite în timpul replicării logice a fost optimizată.
  • Mecanismul de conectare a tabelelor externe Foreign Data Wrapper (postgres_fdw) a fost extins cu suport pentru procesarea paralelă a interogărilor, disponibil în prezent doar pentru conectarea la alte servere PostgreSQL. În postgres_fdw a fost adăugat suportul pentru adăugarea de date în tabele externe în mod de grup și posibilitatea importării tabelelor secționate prin specificarea directivei „IMPORT FOREIGN SCHEMA”.
  • Au fost realizate optimizări în implementarea operației VACUUM (curățarea și ambalarea spațiului de stocare). A fost adăugat un mod de urgență de curățare care să ignore operațiile de curățare nesignificative, dacă se creează condiții pentru depășirea limitelor numerelor identificatorilor de tranzacții (transaction ID wraparound). Costurile de procesare a indexurilor în format B-Tree au fost reduse. Execuția operației „ANALYZE”, care colectează statistici despre funcționarea Bazei de Date, a fost semnificativ accelerată.
  • A fost adăugată posibilitatea de a configura metoda de compresie utilizată în sistemul TOAST, care se ocupă cu stocarea datelor mari, cum ar fi blocuri de text sau informații geometrice. Pe lângă metoda de compresie pglz, acum în TOAST poate fi utilizat algoritmul LZ4.
  • Instrumentele pentru monitorizarea activității SGBD-ului au fost extinse. Au fost adăugate vizualizări pentru a urmări progresul execuției comenzilor „COPY” (pg_stat_progress_copy), statistici despre sloturile de replicare (pg_stat_replication_slots) și activitate asociată cu jurnalul WAL al tranzacțiilor (pg_stat_wal). A fost adăugată funcția compute_query_id, care permite în diverse subsisteme, cum ar fi pg_stat_activity și EXPLAIN VERBOSE, urmărirea interogărilor cu alocarea unui identificator unic pentru fiecare interogare.
  • În programatorul de interogări s-au adăugat optimizări care îmbunătățesc procesarea paralelă a interogărilor și permit creșterea performanței execuției simultane a operațiunilor de scanare secvențială a înregistrărilor, lansarea paralelă a interogărilor în PL/pgSQL prin intermediul comenzii „RETURN QUERY” și executarea paralelă a interogărilor în „REFRESH MATERIALIZED VIEW”. Pentru a îmbunătăți performanța îmbinărilor ciclice (join), a fost implementat suport pentru cache suplimentar.
  • Pentru optimizarea expresiilor, acum poate fi utilizată statistica extinsă, iar pentru optimizarea funcțiilor de fereastră — sortarea incrementală.
  • În procedurile stocate care permit gestionarea tranzacțiilor în blocuri de cod, a fost implementat suport pentru definirea datelor returnate prin intermediul parametrilor „OUT”.
  • A fost adăugată funcția date_bin pentru rotunjirea valorilor de tip timestamp conform unui interval specificat. SELECT date_bin(’15 minutes’, TIMESTAMP ‘2020-02-11 15:44:17’, TIMESTAMP ‘2001-01-01’); 2020-02-11 15:30:00
  • Au fost adăugate expresiile SEARCH și CYCLE definite în standardul SQL, care simplifică ordonarea și identificarea ciclurilor în expresiile tablelor comune recursive (Common Table Expression, CTE). WITH RECURSIVE search_tree(id, link, data) AS ( SELECT t.id, t.link, t.data FROM tree t UNION ALL SELECT t.id, t.link, t.data FROM tree t, search_tree st WHERE t.id = st.link ) SEARCH DEPTH FIRST BY id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • În utilitarul psql, s-a îmbunătățit completarea automată a comenzilor prin apăsarea tastei Tab, în comanda „\df” a fost adăugată posibilitatea de a afișa argumentele funcțiilor, iar în comanda „\dX” a fost extinsă statistica afișată.
  • S-a oferit posibilitatea de a atribui utilizatorilor privilegii care permit doar citirea sau doar scrierea. Privilegiile pot fi acordate în legătură cu tabele, vederi și scheme specifice prin intermediul rolurilor predefinite pg_read_all_data și pg_write_all_data. GRANT pg_read_all_data TO user1;
  • În noile instalații, se asigură implicit aplicarea autentificării prin parolă folosind metoda SCRAM-SHA-256 în loc de md5 (parametrul „password_encryption” la generarea postgresql.conf este acum setat la valoarea ‘scram-sha-256’).

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster