Lanzamiento de la base de datos PostgreSQL 14

Después de un año de desarrollo, se ha publicado una nueva rama estable de la base de datos PostgreSQL 14. Se lanzarán actualizaciones para esta nueva rama durante cinco años hasta noviembre de 2026.

Novedades principales:

  • Se ha añadido el soporte para el acceso a datos JSON mediante expresiones que recuerdan al trabajo con matrices: SELECT (‘{ «postgres»: { «release»: 14 }}’::jsonb)[‘postgres’][‘release’]; SELECT * FROM test WHERE details[‘attributes’][‘size’] = ‘»medium»‘;

    Se ha implementado una sintaxis similar también para datos en formato clave/valor, proporcionados por el tipo hstore. Esta sintaxis fue inicialmente realizada utilizando un marco universal que en el futuro podría ser utilizado para otros tipos. Ejemplo para el tipo hstore: INSERT INTO mytable VALUES (‘a=>b, c=>d’); SELECT h[‘a’] FROM mytable; UPDATE mytable SET h[‘c’] = ‘new’;

  • La familia de tipos para la definición de rangos se ha ampliado con nuevos tipos «multirange», permitiendo especificar listas ordenadas de rangos de valores no superpuestos. Además de cada tipo de rango existente, se ha propuesto un tipo multirange correspondiente, por ejemplo, al tipo «int4range» le corresponde «int4multirange», y a «daterange» — «datemultirange». La aplicación de nuevos tipos simplifica la composición de consultas que manipulan secuencias complejas de rangos. SELECT ‘{[3,7), [8,9)}’::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Se han realizado optimizaciones para mejorar el rendimiento de sistemas con alta carga que procesan un gran número de conexiones. En algunas pruebas se ha observado un aumento del rendimiento de hasta el doble.
  • Se ha mejorado la eficiencia del trabajo de los índices B-tree y se ha resuelto el problema de la expansión de índices al actualizar frecuentemente tablas.
  • Se ha añadido soporte para un modo de transmisión de consultas en el lado del cliente (implementado a nivel de libpq) que permite acelerar considerablemente los escenarios de trabajo con bases de datos relacionados con la realización de un gran número de pequeñas operaciones de escritura (INSERT/UPDATE/DELETE) al enviar la siguiente consulta sin esperar el resultado de la anterior. Este modo también ayuda a acelerar el trabajo en conexiones con grandes latencias en la entrega de paquetes.
  • Se han ampliado las capacidades para configuraciones distribuidas que incluyen múltiples servidores PostgreSQL. En la implementación de la replicación lógica se ha añadido la capacidad de enviar transacciones en ejecución en modo de transmisión, lo que permite aumentar significativamente el rendimiento en la replicación de grandes transacciones. Además, se ha optimizado la decodificación lógica de los datos que llegan durante el proceso de replicación lógica.
  • En el mecanismo de conexión a tablas externas Foreign Data Wrapper (postgres_fdw) se ha añadido soporte para el procesamiento paralelo de consultas, que por el momento se aplica solo al conectarse a otros servidores PostgreSQL. También se ha añadido soporte para la inserción de datos en tablas externas en modo por lotes y la posibilidad de importar tablas particionadas mediante la directiva "IMPORT FOREIGN SCHEMA".
  • Se han realizado optimizaciones en la implementación de la operación VACUUM (recolección de basura y empaquetado del almacenamiento en disco). Se ha añadido un modo de limpieza de emergencia que omite operaciones de limpieza insignificantes si se crean condiciones para el desbordamiento de números de identificadores de transacciones. Se han reducido los costos de procesamiento en í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 ha añadido la posibilidad de configurar el método de compresión aplicado en el sistema TOAST, que se encarga del almacenamiento de grandes datos, como bloques de texto o información geométrica. Además del método de compresión pglz, ahora se puede utilizar el algoritmo LZ4 en TOAST.
  • Se han ampliado las herramientas para monitorear el funcionamiento de la base de datos. Se han añadido vistas para rastrear el progreso de la ejecución de los comandos "COPY" (pg_stat_progress_copy), estadísticas sobre slots de replicación (pg_stat_replication_slots) y actividad relacionada con el registro de transacciones WAL (pg_stat_wal). Se ha añadido la función compute_query_id, que en varias subsistemas, como pg_stat_activity y EXPLAIN VERBOSE, incluye el seguimiento de consultas asignando un identificador único a cada consulta.
  • Se han añadido optimizaciones al planificador de consultas que mejoran el procesamiento paralelo de consultas y permiten aumentar el rendimiento de la ejecución simultánea de operaciones de escaneo secuencial de registros, la ejecución paralela de consultas en PL/pgSQL mediante el comando «RETURN QUERY» y la ejecución paralela de consultas en «REFRESH MATERIALIZED VIEW». Para mejorar el rendimiento de las uniones (join) anidadas cíclicas, se ha implementado el soporte para el almacenamiento en caché adicional.
  • Ahora se puede utilizar estadística extendida para optimizar expresiones y clasificación incremental para optimizar funciones de ventana.
  • En los procedimientos almacenados que permiten gestionar transacciones en bloques de código, se ha implementado el soporte para definir los datos devueltos mediante parámetros «OUT».
  • Se ha añadido la función date_bin para redondear valores del tipo timestamp según el intervalo especificado. SELECT date_bin(’15 minutes’, TIMESTAMP ‘2020-02-11 15:44:17’, TIMESTAMP ‘2001-01-01’); 2020-02-11 15:30:00
  • Se han añadido expresiones SEARCH y CYCLE definidas en el estándar SQL, que simplifican el ordenamiento y la detección de ciclos en expresiones de tabla común recursivas (Common Table Expression, CTE). WITH RECURSIVE search_tree(id, link, data) 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 WHERE t.id = st.link ) SEARCH DEPTH FIRST BY id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • En la utilidad psql se ha mejorado la autocompletación de comandos por tabulación, se ha añadido la posibilidad de mostrar los argumentos de las funciones en el comando «\df», y se ha ampliado la estadística de salida en el comando «\dX».
  • Se ha hecho posible asignar privilegios a los usuarios que permiten solo lectura o solo escritura. Los privilegios se pueden asignar en relación con tablas, vistas y esquemas individuales mediante los roles predefinidos pg_read_all_data y pg_write_all_data. GRANT pg_read_all_data TO user1;
  • En nuevas instalaciones, por defecto se ha asegurado el uso de autenticación por contraseña utilizando el método SCRAM-SHA-256 en lugar de md5 (el parámetro «password_encryption» al generar postgresql.conf ahora se establece en ‘scram-sha-256’).

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster