Versión de PostgreSQL 14 DBMS

Despois dun ano de desenvolvemento, publicouse unha nova rama estable do DBMS PostgreSQL 14. As actualizacións para a nova rama publicaranse durante cinco anos ata novembro de 2026.

Principais novidades:

  • Engadido soporte para acceder a datos JSON usando expresións tipo matriz: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE details['attributes']['size'] = '"medio"';

    Implémentase unha sintaxe similar para os datos clave/valor proporcionados polo tipo hstore. Esta sintaxe implementouse inicialmente mediante un marco universal, que no futuro pode ser usado para outros tipos. Exemplo de tipo hstore: INSERT INTO mytable VALUES ('a=>b, c=>d'); SELECCIONAR h['a'] FROM mytable; UPDATE mytable SET h['c'] = 'novo';

  • A familia de tipos para definir intervalos ampliouse con novos tipos "multirango", que permiten especificar listas ordenadas de intervalos de valores non superpostos. Ademais de cada tipo de intervalo existente, proponse o seu propio tipo de intervalo múltiple, por exemplo, o tipo "int4range" corresponde a "int4multirange" e o tipo "daterange" corresponde a "datemultirange". O uso de novos tipos simplifica o deseño de consultas que manipulan secuencias complexas de rangos. SELECCIONAR '{[3,7), [8,9)}'::int4multirange; SELECCIONAR intervalo num (intervalo num (1.0, 14.0), intervalo num (20.0, 25.0));
  • Realizáronse optimizacións para mellorar o rendemento dos sistemas de alta carga que procesan un gran número de conexións. Nalgunhas probas, obsérvase un aumento dobre do rendemento.
  • Mellorouse a eficiencia dos índices da árbore B e resolveuse o problema do crecemento do índice cando as táboas se actualizan con frecuencia.
  • Engadido soporte para o modo de transmisión de solicitudes por canalización do lado do cliente (implementado no nivel de libpq), o que lle permite acelerar significativamente os escenarios de bases de datos asociados coa realización dun gran número de pequenas operacións de escritura (INSERT/UPDATE/DELETE) enviando o seguinte solicitude sen esperar o resultado da anterior. O modo tamén axuda a acelerar o traballo nas conexións con longos atrasos na entrega de paquetes.
  • Capacidades melloradas para configuracións distribuídas que impliquen varios servidores PostgreSQL. Na implementación da replicación lóxica, agora faise posible enviar transaccións en modo streaming que están en proceso de execución, o que pode mellorar significativamente o rendemento da replicación de grandes transaccións. Ademais, optimizouse a decodificación lóxica dos datos recibidos durante a replicación lóxica.
  • O mecanismo para conectar táboas externas Foreign Data Wrapper (postgres_fdw) engadiu soporte para o procesamento de consultas paralelas, que actualmente só é aplicable cando se conecta a outros servidores PostgreSQL. postgres_fdw tamén engade soporte para engadir datos a táboas externas en modo por lotes e a posibilidade de importar táboas particionadas especificando a directiva "IMPORT FOREIGN SCHEMA".
  • Realizáronse optimizacións na implantación da operación VACUUM (recollida de lixo e empaquetado do almacenamento en disco). Engadiuse un modo de limpeza de emerxencia que omite operacións de limpeza non esenciais se se crean condicións de envolvemento de ID de transacción. Sobrecarga reducida ao procesar índices no formato B-Tree. A execución da operación "ANALYZE", que recolle estatísticas sobre o funcionamento da base de datos, acelerouse significativamente.
  • Engadida a posibilidade de configurar o método de compresión empregado no sistema TOAST, que se encarga de almacenar grandes datos, como bloques de texto ou información xeométrica. Ademais do método de compresión pglz, TOAST agora pode usar o algoritmo LZ4.
  • Ampliáronse as ferramentas de seguimento do funcionamento do SGBD. Engadíronse vistas para seguir o progreso dos comandos COPY (pg_stat_progress_copy), estatísticas sobre espazos de replicación (pg_stat_replication_slots) e actividade relacionada co rexistro de transaccións de WAL (pg_stat_wal). Engadiuse a función compute_query_id, que permite a varios subsistemas, como pg_stat_activity e EXPLAIN VERBOSE, rastrexar as solicitudes asignando un identificador único para cada solicitude.
  • Engadíronse optimizacións ao planificador de consultas para mellorar o procesamento paralelo de consultas e mellorar o rendemento da execución simultánea de operacións de dixitalización de rexistros secuenciais, a execución paralela de consultas en PL/pgSQL mediante o comando "RETURN QUERY" e a execución paralela de consultas en " ACTUALIZAR VISTA MATERIALIZADA”. Para mellorar o rendemento das combinacións aniñadas cíclicas (unión), implementouse o soporte para almacenamento en caché adicional.
  • Agora pódense usar estatísticas avanzadas para optimizar expresións e agora pódese usar a ordenación incremental para optimizar as funcións da xanela.
  • Os procedementos almacenados que permiten xestionar transaccións en bloques de código agora admiten a definición de datos de retorno mediante os parámetros "OUT".
  • Engadiuse a función date_bin para redondear os valores de marca de tempo segundo un intervalo especificado. SELECT date_bin('15 minutos', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • Engadíronse expresións SEARCH e CYCLE definidas no estándar SQL para facilitar a ordenación e identificación de ciclos en Common Table Expressions (CTE) recursivas. CON Árbore de busca recursiva (id, ligazón, datos) AS ( SELECCIONAR t.id, t.link, t.data DA árbore t UNION ALL SELECT t.id, t.link, t.data FROM árbore t, search_tree st WHERE t. id = st.link ) PROFUNDIDADE DE BUSCA PRIMEIRO POR id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • Na utilidade psql, mellorouse o autocompletado de comandos con pestanas, engadiuse a capacidade de mostrar argumentos de función ao comando "\df" e as estatísticas mostradas expandíronse ao comando "\dX".
  • É posible asignar privilexios de só lectura ou só escritura aos usuarios. Os privilexios pódense establecer en táboas, vistas e esquemas individuais usando os roles predefinidos pg_read_all_data e pg_write_all_data. GRANT pg_read_all_data ao usuario1;
  • As novas instalacións teñen por defecto a autenticación de contrasinal usando SCRAM-SHA-256 en lugar de md5 (o parámetro "password_encryption" ao xerar postgresql.conf agora está definido como "scram-sha-256").

Fonte: opennet.ru

Engadir un comentario