Grupul de dezvoltatori PostgreSQL a anunțat lansarea PostgreSQL 12, cea mai recentă versiune a sistemului de gestionare a bazelor de date relaționale cu sursă deschisă.
În PostgreSQL 12, performanța interogărilor a fost semnificativ îmbunătățită – acest lucru se aplică în special lucrului cu volume mari de date, de asemenea, a fost optimizată utilizarea spațiului pe disc în ansamblu.
Printre noile funcționalități:
- implementarea limbajului de interogare JSON Path (cea mai importantă parte a standardului SQL/JSON);
- optimizarea execuției expresiilor comune de tabel (WITH);
- suport pentru coloane generate
De asemenea, comunitatea continuă munca asupra extinsibilității și fiabilității PostgreSQL, dezvoltând suportul pentru internaționalizare, opțiuni de autentificare, oferind căi mai simple pentru administrarea sistemului.
Această versiune include implementarea interfeței motorului de stocare extensibil, permițând dezvoltatorilor să creeze metode proprii de stocare a datelor.
Îmbunătățiri ale performanței
PostgreSQL 12 include îmbunătățiri semnificative ale performanței și proceduri de întreținere pentru sistemele de indexare și secționare.
Indecșii B-tree – tipul standard de indexare în PostgreSQL, au fost optimizați în versiunea 12 pentru sarcini care implică modificări frecvente ale indecșilor. Utilizarea testului de referință TPC-C pentru PostgreSQL 12 a demonstrat o scădere a utilizării spațiului cu o medie de 40% și o creștere generală a performanței interogărilor.
Interogările la tabelele secționate au primit îmbunătățiri notabile, în special pentru tabelele formate din mii de secțiuni, care implică lucrul doar cu părți limitate din seturile de date. A fost îmbunătățită performanța adăugării de date în tabele secționate prin INSERT și COPY, precum și capacitatea de a conecta o nouă secțiune fără a bloca interogările în execuție.
În PostgreSQL 12 au fost realizate îmbunătățiri suplimentare în indexare, care influențează performanța generală, inclusiv:
- reducerea supracosturilor la generarea WAL pentru tipurile de indecși GiST, GIN și SP-GiST;
- posibilitatea de a crea așa-numitele indecși de acoperire (covering indexes, propunere INCLUDE) pe indecșii GiST;
- posibilitatea de a executa interogări de «vecinătate» (k-NN search) folosind operatorul de distanță () și utilizând indecși SP-GiST;
- suportul pentru colectarea statisticilor despre cele mai comune valori (most-common value, MCV) prin intermediul CREATE STATISTICS, ceea ce ajută la obținerea celor mai bune planuri de execuție a interogărilor atunci când se utilizează coloane ale căror valori sunt distribuite inegal.
Compilarea JIT folosind LLVM, introdusă în PostgreSQL 11, este acum activată implicit. Compilarea JIT permite creșterea performanței în lucrul cu expresiile din clauzele WHERE, listele de țintă, agregate și anumite operațiuni interne. Aceasta este disponibilă dacă ați compilat PostgreSQL cu LLVM sau utilizați un pachet PostgreSQL care a fost creat cu LLVM activat.
Îmbunătățiri ale capacităților limbajului SQL și compatibilității cu standardul
În PostgreSQL 12 a apărut posibilitatea de a efectua interogări asupra documentelor JSON folosind expresiile de cale JSON definite în standardul SQL/JSON. Astfel de interogări pot utiliza mecanismele existente de indexare pentru documentele stocate în format JSONB, pentru extragerea eficientă a datelor.
Expresiile de tabel comune, cunoscute și sub denumirea de interogări cu WITH, în PostgreSQL 12 pot acum fi executate automat folosind substituția, ceea ce poate ajuta la îmbunătățirea performanței multor interogări existente. În noua versiune, o parte din interogarea WITH poate fi executată cu substituție, atâta timp cât nu este recursivă, nu are efecte secundare și este referită o singură dată în partea ulterioară a interogării.
În PostgreSQL 12 apare suportul pentru „coloane generate”. Descris în standardul SQL, acest tip de coloană calculează o valoare pe baza conținutului altor coloane din aceeași tabelă. În această versiune, PostgreSQL suportă „coloane generate stocate”, unde valoarea calculată este stocată pe disc.
Internaționalizare
PostgreSQL 12 extinde suportul pentru corespondențele ICU, permițând utilizatorilor să definească „corespondențe nedeterminate”, care pot, de exemplu, permite comparații fără ținerea cont de majuscule sau accente.
Autentificare
PostgreSQL își extinde suportul pentru metode fiabile de autentificare prin câteva îmbunătățiri care oferă securitate și funcționalitate suplimentară. În această versiune sunt introduse criptarea pe partea clientului și pe partea serverului pentru autentificarea prin interfețele GSSAPI, precum și capacitatea PostgreSQL de a detecta servere LDAP, dacă PostgreSQL a fost compilat cu OpenLDAP.
În plus, PostgreSQL 12 acum suportă o variantă de autentificare multi-factor. Acum serverul PostgreSQL poate solicita clientului furnizarea unui certificat valid SSL- certificatul cu numele de utilizator corespunzător utilizând clientcert=verify-full, și poate combina acest lucru cu o cerință separată de metodă de autentificare (de exemplu, scram-sha-256).
Administrare
În PostgreSQL 12 a apărut posibilitatea de a reconstrui indecșii fără blocare folosind comanda REINDEX CONCURRENTLY. Acest lucru le permite utilizatorilor să evite timpii de nefuncționare ai SGBD-ului în timpul reconstrucției îndelungate a indecșilor.
În plus, în PostgreSQL 12 se pot activa sau dezactiva sumele de control ale paginilor în clusterul care se află în stare oprită, folosind comanda pg_checksums. Anterior, sumele de control ale paginilor - o funcție care ajută la verificarea integrității datelor stocate pe disc - puteau fi activate doar în momentul inițializării clusterului PostgreSQL cu ajutorul initdb.
Sursa: linux.org.ru
