Versió de PostgreSQL 14

Després d'un any de desenvolupament, s'ha publicat una nova branca estable del SGBD PostgreSQL 14. Les actualitzacions de la nova branca es publicaran durant cinc anys fins al novembre de 2026.

Principals innovacions:

  • S'ha afegit suport per accedir a dades JSON mitjançant expressions semblants a matriu: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE details['attributes']['size'] = '"mitjana"';

    S'implementa una sintaxi similar per a les dades clau/valor proporcionades pel tipus hstore. Aquesta sintaxi es va implementar inicialment mitjançant un marc universal, que en el futur es pot utilitzar per a altres tipus. Exemple de tipus hstore: INSERT INTO mytable VALUES ('a=>b, c=>d'); SELECCIONA h['a'] FROM mytable; UPDATE mytable SET h['c'] = 'nou';

  • La família de tipus per definir intervals s'ha ampliat amb nous tipus "multirange", que us permeten especificar llistes ordenades d'intervals de valors no superposats. A més de cada tipus d'interval existent, es proposa el seu propi tipus multirang, per exemple, el tipus "int4range" correspon a "int4multirange" i el tipus "daterange" correspon a "datemultirange". L'ús de nous tipus simplifica el disseny de consultes que manipulen seqüències complexes d'intervals. SELECCIONA '{[3,7), [8,9)}'::int4multirange; SELECCIONA nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • S'han fet optimitzacions per millorar el rendiment dels sistemes d'alta càrrega que processen un gran nombre de connexions. En algunes proves, s'observa un augment del doble del rendiment.
  • S'ha millorat l'eficiència dels índexs B-tree i s'ha resolt el problema amb el creixement de l'índex quan les taules s'actualitzen amb freqüència.
  • S'ha afegit suport per al mode de transmissió de sol·licituds per canalització del costat del client (implementat al nivell de libpq), que us permet accelerar significativament els escenaris de base de dades associats amb la realització d'un gran nombre de petites operacions d'escriptura (INSERT/ACTUALITZACIÓ/DELETE) enviant el següent sol·licitud sense esperar el resultat de l'anterior. El mode també ajuda a accelerar el treball en connexions amb retards llargs en l'entrega de paquets.
  • Capacitats millorades per a configuracions distribuïdes que impliquen diversos servidors PostgreSQL. En la implementació de la replicació lògica, ara és possible enviar transaccions en curs en mode de transmissió, que pot millorar significativament el rendiment de la replicació de grans transaccions. A més, s'ha optimitzat la descodificació lògica de les dades rebudes durant la replicació lògica.
  • El mecanisme per connectar taules externes Foreign Data Wrapper (postgres_fdw) ha afegit suport per al processament de consultes paral·leles, que actualment només és aplicable quan es connecta a altres servidors PostgreSQL. postgres_fdw també afegeix suport per afegir dades a taules externes en mode per lots i la possibilitat d'importar taules particionades especificant la directiva "IMPORT FOREIGN SCHEMA".
  • S'han fet optimitzacions en la implementació de l'operació VACUUM (recollida d'escombraries i embalatge d'emmagatzematge en disc). S'ha afegit un mode de neteja d'emergència que salta les operacions de neteja no essencials si es creen condicions d'embolcall de l'identificador de transacció. S'ha reduït la sobrecàrrega en processar índexs en format B-Tree. L'execució de l'operació "ANALYZE", que recull estadístiques sobre el funcionament de la base de dades, s'ha accelerat significativament.
  • S'ha afegit la possibilitat de configurar el mètode de compressió utilitzat en el sistema TOAST, que s'encarrega d'emmagatzemar dades grans, com ara blocs de text o informació geomètrica. A més del mètode de compressió pglz, ara TOAST pot utilitzar l'algorisme LZ4.
  • S'han ampliat les eines de seguiment del funcionament del SGBD. S'han afegit vistes per fer un seguiment del progrés de les ordres COPY (pg_stat_progress_copy), estadístiques sobre les ranures de rèplica (pg_stat_replication_slots) i l'activitat relacionada amb el registre de transaccions WAL (pg_stat_wal). S'ha afegit la funció compute_query_id, que permet a diversos subsistemes, com pg_stat_activity i EXPLAIN VERBOSE, fer un seguiment de les sol·licituds assignant un identificador únic per a cada sol·licitud.
  • S'han afegit optimitzacions al planificador de consultes per millorar el processament paral·lel de consultes i millorar el rendiment de l'execució simultània d'operacions d'exploració de registres seqüencials, l'execució paral·lela de consultes en PL/pgSQL mitjançant l'ordre "RETURN QUERY" i l'execució paral·lela de consultes a " ACTUALITZAR LA VISTA MATERIALITZADA”. Per millorar el rendiment de les combinacions imbricades cícliques (unió), s'ha implementat suport per a la memòria cau addicional.
  • Les estadístiques avançades ara es poden utilitzar per optimitzar expressions i l'ordenació incremental ara es pot utilitzar per optimitzar les funcions de la finestra.
  • Els procediments emmagatzemats que us permeten gestionar transaccions en blocs de codi ara admeten la definició de dades de retorn mitjançant els paràmetres "OUT".
  • S'ha afegit la funció date_bin per arrodonir els valors de marca de temps segons un interval especificat. SELECT date_bin('15 minuts', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • S'han afegit expressions SEARCH i CYCLE definides a l'estàndard SQL per facilitar l'ordenació i la identificació de cicles en expressions recursives de taula comuns (CTE). AMB arbre_de_cerca recursiu (id, enllaç, dades) 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 ON t. id = st.link ) PROFUNDITAT DE CERCADOR FIRST BY id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • A la utilitat psql, s'ha millorat l'autocompleció d'ordres amb pestanyes, s'ha afegit la capacitat de mostrar arguments de funció a l'ordre "\df" i les estadístiques mostrades s'han ampliat a l'ordre "\dX".
  • És possible assignar privilegis de només lectura o només escriptura als usuaris. Els privilegis es poden establir en taules, vistes i esquemes individuals mitjançant els rols predefinits pg_read_all_data i pg_write_all_data. GRANT pg_read_all_data A l'usuari1;
  • Les instal·lacions noves fan servir per defecte l'autenticació de contrasenya mitjançant SCRAM-SHA-256 en comptes de md5 (el paràmetre "password_encryption" quan es genera postgresql.conf ara s'estableix en "scram-sha-256").

Font: opennet.ru

Afegeix comentari