Lansarea PostgreSQL 14

După un an de dezvoltare, a fost publicată o nouă ramură stabilă a SGBD PostgreSQL 14. Actualizările pentru noua ramură vor fi lansate pe parcursul a cinci ani până în noiembrie 2026.

Principalele inovații:

  • S-a adăugat suport pentru accesarea datelor JSON folosind expresii asemănătoare matricei: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE detalii['attributes']['size'] = '"mediu"';

    O sintaxă similară este implementată pentru datele cheie/valoare furnizate de tipul hstore. Această sintaxă a fost implementată inițial folosind un cadru universal, care în viitor poate fi folosit pentru alte tipuri. Exemplu pentru tipul hstore: INSERT INTO mytable VALUES ('a=>b, c=>d'); SELECTAȚI h['a'] FROM mytable; UPDATE mytable SET h['c'] = 'nou';

  • Familia de tipuri pentru definirea intervalelor a fost extinsă cu noi tipuri „multirange”, care vă permit să specificați liste ordonate de intervale de valori care nu se suprapun. Pe lângă fiecare tip de interval existent, este propus propriul său tip multirange, de exemplu, tipul „int4range” corespunde „int4multirange”, iar tipul „daterange” corespunde „datemultirange”. Utilizarea de noi tipuri simplifică proiectarea interogărilor care manipulează secvențe complexe de intervale. SELECTAȚI '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Au fost făcute optimizări pentru a îmbunătăți performanța sistemelor cu sarcină mare care procesează un număr mare de conexiuni. În unele teste, se observă o creștere de două ori a performanței.
  • Eficiența indicilor B-tree a fost îmbunătățită și problema cu creșterea indicilor atunci când tabelele sunt actualizate frecvent a fost rezolvată.
  • S-a adăugat suport pentru modul de transmitere a cererilor pe partea client (implementat la nivelul libpq), care vă permite să accelerați semnificativ scenariile bazei de date asociate cu efectuarea unui număr mare de operațiuni mici de scriere (INSERT/UPDATE/DELETE) prin trimiterea următoarea cerere fără a aștepta rezultatul celei anterioare. Modul ajută, de asemenea, la accelerarea lucrărilor la conexiunile cu întârzieri mari la livrarea pachetelor.
  • Capacități îmbunătățite pentru configurații distribuite care implică mai multe servere PostgreSQL. În implementarea replicării logice, acum devine posibilă trimiterea tranzacțiilor în curs în modul de streaming, ceea ce poate îmbunătăți semnificativ performanța de replicare a tranzacțiilor mari. În plus, 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 adăugat suport pentru procesarea interogărilor paralele, care în prezent este aplicabilă numai atunci când vă conectați la alte servere PostgreSQL. postgres_fdw adaugă, de asemenea, suport pentru adăugarea de date la tabele externe în modul batch și capacitatea de a importa tabele partiționate prin specificarea directivei „IMPORT FOREIGN SCHEMA”.
  • Au fost făcute optimizări la implementarea operațiunii VACUUM (colectarea gunoiului și ambalarea stocării pe disc). A fost adăugat un mod de curățare de urgență care omite operațiunile de curățare neesențiale dacă sunt create condiții de încadrare a ID-ului tranzacției. Suplimentar redus la procesarea indicilor în format B-Tree. Execuția operațiunii „ANALYZE”, care colectează statistici despre funcționarea bazei de date, a fost accelerată semnificativ.
  • S-a adăugat posibilitatea de a configura metoda de compresie utilizată în sistemul TOAST, care este responsabilă pentru stocarea datelor mari, cum ar fi blocuri de text sau informații geometrice. Pe lângă metoda de compresie pglz, TOAST poate folosi acum algoritmul LZ4.
  • Au fost extinse instrumentele de monitorizare a funcționării SGBD. S-au adăugat vizualizări pentru a urmări progresul comenzilor COPY (pg_stat_progress_copy), statistici despre sloturile de replicare (pg_stat_replication_slots) și activitatea legată de jurnalul de tranzacții WAL (pg_stat_wal). A fost adăugată funcția compute_query_id, care permite diferitelor subsisteme, cum ar fi pg_stat_activity și EXPLAIN VERBOSE, să urmărească cererile prin alocarea unui identificator unic pentru fiecare cerere.
  • Au fost adăugate optimizări la planificatorul de interogări pentru a îmbunătăți procesarea paralelă a interogărilor și a îmbunătăți performanța executării simultane a operațiunilor de scanare secvențială a înregistrărilor, execuția paralelă a interogărilor în PL/pgSQL folosind comanda „RETURN QUERY” și execuția paralelă a interogărilor în „ ACTUALIZARE VEDERE MATERIALIZĂ”. Pentru a îmbunătăți performanța îmbinărilor imbricate ciclice (join), a fost implementat suport pentru stocarea în cache suplimentară.
  • Statisticile avansate pot fi acum folosite pentru a optimiza expresiile, iar sortarea incrementală poate fi acum utilizată pentru a optimiza funcțiile ferestrelor.
  • Procedurile stocate care vă permit să gestionați tranzacțiile în blocuri de cod acceptă acum definirea datelor de returnare folosind parametrii „OUT”.
  • S-a adăugat funcția date_bin pentru a rotunji valorile marcajului de timp în funcție de un interval specificat. SELECT date_bin('15 minute', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • S-au adăugat expresii SEARCH și CYCLE definite în standardul SQL pentru a facilita ordonarea și identificarea ciclurilor în Common Table Expressions recursive (CTE). WITH search_tree(id, link, data) RECURSIV AS ( SELECT t.id, t.link, t.data FROM tree t UNION ALL SELECT t.id, t.link, t.data FROM arbore t, search_tree st WHERE t. id = st.link ) ADÂNCIUNEA CĂUTARE FIRST BY id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • În utilitarul psql, completarea automată a comenzilor cu file a fost îmbunătățită, capacitatea de a afișa argumentele funcției a fost adăugată la comanda „\df”, iar statisticile afișate au fost extinse la comanda „\dX”.
  • Este posibil să se atribuie utilizatorilor privilegii numai de citire sau doar de scriere. Privilegiile pot fi setate pe tabele, vizualizări și scheme individuale folosind rolurile predefinite pg_read_all_data și pg_write_all_data. GRANT pg_read_all_data TO user1;
  • Noile instalări folosesc implicit autentificarea prin parolă folosind SCRAM-SHA-256 în loc de md5 (parametrul „password_encryption” la generarea postgresql.conf este acum setat la „scram-sha-256”).

Sursa: opennet.ru

Adauga un comentariu