Lanzamiento del DBMS PostgreSQL 14

Después de un año de desarrollo, se publicó una nueva rama estable del DBMS PostgreSQL 14. Las actualizaciones para la nueva rama se publicarán durante cinco años, hasta noviembre de 2026.

Principales novedades:

  • Se agregó soporte para acceder a datos JSON usando expresiones tipo matriz: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECCIONAR * DE prueba DONDE detalles['atributos']['tamaño'] = '"medio"';

    Se implementa una sintaxis similar para los datos clave/valor proporcionados por el tipo hstore. Esta sintaxis se implementó inicialmente utilizando un marco universal, que en el futuro podrá usarse para otros tipos. Ejemplo de tipo hstore: INSERT INTO mytable VALUES ('a=>b, c=>d'); SELECCIONE h['a'] DESDE mitabla; ACTUALIZAR mi tabla SET h['c'] = 'nuevo';

  • La familia de tipos para definir rangos se ha ampliado con nuevos tipos "multirango", que le permiten especificar listas ordenadas de rangos de valores que no se superponen. Además de cada tipo de rango existente, se propone su propio tipo multirango, por ejemplo, el tipo “int4range” corresponde a “int4multirange”, y el tipo “daterange” corresponde a “datemultirange”. El uso de nuevos tipos simplifica el diseño de consultas que manipulan secuencias complejas de rangos. SELECCIONE '{[3,7), [8,9)}'::int4multirange; SELECCIONE nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Se han realizado optimizaciones para mejorar el rendimiento de los sistemas de alta carga que procesan una gran cantidad de conexiones. En algunas pruebas, se observa un aumento del doble en el rendimiento.
  • Se ha mejorado la eficiencia de los índices del árbol B y se ha resuelto el problema del crecimiento del índice cuando las tablas se actualizan con frecuencia.
  • Se agregó soporte para el modo de transmisión de solicitudes del lado del cliente (implementado en el nivel libpq), lo que le permite acelerar significativamente los escenarios de bases de datos asociados con la realización de una gran cantidad de pequeñas operaciones de escritura (INSERT/UPDATE/DELETE) enviando el siguiente solicitud sin esperar el resultado de la anterior. El modo también ayuda a acelerar el trabajo en conexiones con largos retrasos en la entrega de paquetes.
  • Capacidades mejoradas para configuraciones distribuidas que involucran múltiples servidores PostgreSQL. La implementación de replicación lógica ahora tiene la capacidad de enviar transacciones en progreso en modo streaming, lo que puede mejorar significativamente el rendimiento de la replicación de transacciones grandes. Además, se ha optimizado la decodificación lógica de los datos recibidos durante la replicación lógica.
  • El mecanismo para conectar tablas externas Foreign Data Wrapper (postgres_fdw) ha agregado soporte para el procesamiento de consultas en paralelo, que actualmente solo es aplicable cuando se conecta a otros servidores PostgreSQL. postgres_fdw también agrega soporte para agregar datos a tablas externas en modo por lotes y la capacidad de importar tablas particionadas especificando la directiva "IMPORTAR ESQUEMA EXTRANJERO".
  • Se han realizado optimizaciones en la implementación de la operación VACUUM (recolección de basura y empaquetado de almacenamiento en disco). Se ha agregado un modo de limpieza de emergencia que omite operaciones de limpieza no esenciales si se crean condiciones envolventes de ID de transacción. Reducción de gastos generales al procesar índices en formato B-Tree. Se ha acelerado significativamente la ejecución de la operación “ANALYZE”, que recopila estadísticas sobre el funcionamiento de la base de datos.
  • Se agregó la posibilidad de configurar el método de compresión utilizado en el sistema TOAST, que se encarga de almacenar grandes datos, como bloques de texto o información geométrica. Además del método de compresión pglz, TOAST ahora puede utilizar el algoritmo LZ4.
  • Se han ampliado las herramientas para monitorear el funcionamiento del DBMS. Se agregaron vistas para rastrear el progreso de los comandos COPY (pg_stat_progress_copy), estadísticas sobre ranuras de replicación (pg_stat_replication_slots) y actividad relacionada con el registro de transacciones WAL (pg_stat_wal). Se agregó la función Compute_query_id, que permite que varios subsistemas, como pg_stat_activity y EXPLAIN VERBOSE, realicen un seguimiento de las solicitudes asignando un identificador único para cada solicitud.
  • Se han agregado optimizaciones al planificador de consultas para mejorar el procesamiento paralelo de consultas y mejorar el rendimiento de la ejecución simultánea de operaciones de escaneo de registros secuenciales, la ejecución paralela de consultas en PL/pgSQL usando el comando "RETURN QUERY" y la ejecución paralela de consultas en " ACTUALIZAR VISTA MATERIALIZADA”. Para mejorar el rendimiento de las fusiones anidadas cíclicas (uniones), se ha implementado soporte para almacenamiento en caché adicional.
  • Ahora se pueden utilizar estadísticas avanzadas para optimizar expresiones y ahora se puede utilizar la clasificación incremental para optimizar las funciones de las ventanas.
  • Los procedimientos almacenados que le permiten administrar transacciones en bloques de código ahora admiten la definición de datos de devolución utilizando parámetros "OUT".
  • Se agregó la función date_bin para redondear los valores de marca de tiempo según un intervalo específico. SELECT date_bin('15 minutos', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • Se agregaron expresiones de BÚSQUEDA y CICLO definidas en el estándar SQL para facilitar el orden e identificación de ciclos en expresiones de tabla comunes (CTE) recursivas. CON árbol_búsqueda RECURSIVO (id, enlace, datos) COMO (SELECCIONE t.id, t.link, t.data DEL árbol t UNION TODOS SELECCIONE t.id, t.link, t.data DEL árbol t, árbol_búsqueda st DONDE t. id = st.link) BUSCAR PROFUNDIDAD PRIMERO POR id SET ordercol SELECCIONAR * DESDE search_tree ORDENAR POR ordercol;
  • En la utilidad psql, se mejoró el autocompletado de comandos con pestañas, se agregó la capacidad de mostrar argumentos de función al comando "\df" y las estadísticas mostradas se ampliaron al comando "\dX".
  • Es posible asignar privilegios de solo lectura o solo escritura a los usuarios. Los privilegios se pueden establecer en tablas, vistas y esquemas individuales utilizando los roles predefinidos pg_read_all_data y pg_write_all_data. OTORGAR pg_read_all_data AL usuario1;
  • Las nuevas instalaciones utilizan de forma predeterminada la autenticación de contraseña utilizando SCRAM-SHA-256 en lugar de md5 (el parámetro "password_encryption" al generar postgresql.conf ahora está configurado en 'scram-sha-256').

Fuente: opennet.ru

Añadir un comentario