13 puntos por GN⁺ 2024-09-27 | 1 comentarios | Compartir por WhatsApp
  • PostgreSQL 17 incluye mejoras importantes de rendimiento, mejoras en la gestión de memoria, optimización del acceso al almacenamiento, mejoras para cargas de trabajo con alta concurrencia, mayor velocidad en cargas masivas y exportaciones, y mejoras en la ejecución de consultas sobre índices

Mejoras de rendimiento en todo el sistema

  • Se mejoró la estructura interna de memoria del proceso vacuum de PostgreSQL, esencial para el funcionamiento normal, reduciendo el uso de memoria hasta 20 veces
    • Esto acelera vacuum y reduce el uso de recursos compartidos, dejando más recursos disponibles para las cargas de trabajo
  • Se siguió mejorando el rendimiento de la capa de I/O
    • Las mejoras en el procesamiento de Write-Ahead Log (WAL) muestran hasta 2 veces más rendimiento de escritura en cargas de trabajo de alta concurrencia
    • Una nueva interfaz de streaming I/O aumenta la velocidad de los escaneos secuenciales (leer todos los datos de una tabla) y la velocidad de actualización de estadísticas del plan de ejecución del comando ANALYZE
  • Las mejoras de rendimiento también se extienden a la ejecución de consultas
    • Se mejoró el rendimiento de las consultas con cláusulas IN que usan índices B-tree (el método de indexación predeterminado de PostgreSQL)
    • Se admite la construcción paralela en índices BRIN
  • Incluye varias mejoras para la planificación de consultas
    • Optimización para restricciones NOT NULL
    • Mejoras en el procesamiento de expresiones comunes de tabla (consultas WITH)
  • Se amplía el soporte de SIMD (Single Instruction/Multiple Data) para acelerar cálculos, como el uso de AVX-512 en la función bit_count

Expansión aún mayor de la experiencia para desarrolladores

  • PostgreSQL fue la primera base de datos relacional en agregar soporte para JSON (2012)
  • En PostgreSQL 17, se amplía todavía más la implementación del estándar SQL/JSON
    • JSON_TABLE permite convertir datos JSON en tablas estándar de PostgreSQL
    • Soporte para constructores SQL/JSON (JSON, JSON_SCALAR, JSON_SERIALIZE) y funciones de consulta (JSON_EXISTS, JSON_QUERY, JSON_VALUE)
    • Se agregan expresiones jsonpath enfocadas en convertir datos JSON a tipos de datos nativos de PostgreSQL (números, booleanos, cadenas, fecha/hora)
  • El comando MERGE agrega la cláusula RETURNING y la capacidad de actualizar vistas
  • Mejoras en carga masiva y exportación de datos
    • Hasta 2 veces más rendimiento al exportar filas grandes usando el comando COPY
    • Mejor rendimiento de COPY cuando la codificación de origen y destino coincide
    • Se agrega la opción ON_ERROR para continuar la importación incluso si ocurren errores de inserción
  • Se amplían las capacidades para gestionar datos distribuidos entre particiones e instancias remotas de PostgreSQL
    • Se admite el uso de columnas ID y restricciones de exclusión en tablas particionadas
    • Con postgres_fdw, es posible empujar subconsultas EXISTS e IN al servidor remoto
  • Incluye un proveedor de colación integrado, independiente de la plataforma e inmutable
    • Ofrece una semántica de ordenamiento similar a la colación C, pero usa codificación UTF-8 en lugar de SQL_ASCII
    • Al usar este nuevo proveedor de colación, las consultas basadas en texto devuelven los mismos resultados de ordenamiento sin importar dónde se ejecute PostgreSQL

Mejoras en la replicación lógica para alta disponibilidad y actualizaciones de versión mayor

  • La replicación lógica se usa para transmitir datos en tiempo real
  • En versiones anteriores, era necesario eliminar los slots de replicación lógica al actualizar una versión mayor, lo que obligaba a resincronizar los datos con los suscriptores después de la actualización
  • Desde PostgreSQL 17, ya no es necesario eliminar los slots de replicación lógica, lo que simplifica el proceso de actualización
  • Incluye controles de failover para la replicación lógica, lo que permite implementaciones más resilientes en entornos de alta disponibilidad
  • Se introduce la herramienta de línea de comandos pg_createsubscriber, que permite convertir una réplica física en una nueva réplica lógica

Más opciones para seguridad y gestión operativa

  • PostgreSQL 17 amplía aún más la manera en que los usuarios gestionan todo el ciclo de vida del sistema de base de datos
  • Se agrega una nueva opción TLS llamada sslnegotiation, que permite realizar un handshake TLS directo al usar ALPN
  • Se agrega el rol predefinido pg_maintain, que otorga permisos para realizar tareas de mantenimiento
  • pg_basebackup, la utilidad de respaldo incluida en PostgreSQL, ahora admite respaldos incrementales y se agrega la utilidad pg_combinebackup para reconstruir un respaldo completo
  • pg_dump ahora incluye una nueva opción, --filter, para seleccionar qué objetos incluir al crear un archivo de volcado
  • Mejoras en monitoreo y análisis
    • EXPLAIN muestra el tiempo dedicado a lecturas y escrituras de bloques I/O locales
    • Incluye dos nuevas opciones, SERIALIZE y MEMORY: útiles para ver el tiempo dedicado a convertir datos para transmisión por red y la cantidad de memoria utilizada
  • Se informa el progreso de la limpieza de índices
  • Se agrega la vista del sistema pg_wait_events, que al combinarse con pg_stat_activity ofrece información sobre por qué una sesión activa está esperando

1 comentarios

 
GN⁺ 2024-09-27
Opiniones de Hacker News
  • Felicitaciones por el nuevo lanzamiento de PostgreSQL 17 junto con la mención de varias mejoras

    • Mejora en la estructura de memoria de las operaciones de vacuum, con una reducción de hasta 20 veces en el uso de memoria
    • Soporte para respaldos incrementales en la utilidad de respaldo pg_basebackup y adición de la utilidad pg_combinebackup
    • Mejoras en los wrappers de datos externos (FDW) que permiten procesar subconsultas EXISTS e IN en servidores remotos
  • Opiniones sobre la utilidad de las funciones JSON

    • Se enfatiza la utilidad de las funciones JSON en bases de datos relacionales
    • Se menciona la importancia de poder generar JSON a partir de los datos
    • Se expresa expectativa por aprender la función JSON_TABLE
  • Se comparte experiencia de uso de la función JSON_TABLE

    • Se destaca la utilidad de guardar respuestas JSON en columnas jsonb y escribir vistas para analizarlas
    • Se siente alegría al confirmar este enfoque en la documentación de las nuevas funciones de PostgreSQL
  • Se mencionan mejoras de rendimiento y de UX en PostgreSQL 17

    • Soporte para columnas ID y restricciones de exclusión en tablas particionadas
    • Se garantiza un ordenamiento consistente en consultas basadas en texto con la adición de un proveedor de colación independiente de la plataforma e inmutable
  • Impresiones sobre el registro de cambios

    • Decepción porque no se incluyó el PR de UUIDv7
  • Se comparte la experiencia de haber migrado de Oracle a MSSQL por problemas de confianza en el software de código abierto

    • Un jefe afirmaba que "no se puede confiar en el código abierto para software empresarial"
  • Agradecimiento por la mejora continua de Postgres y deseo de soporte oficial para la extensión Incremental View Maintenance (IVM)

  • Expectativa por el soporte para actualizaciones de versiones mayores de PostgreSQL

  • Deseo de que Postgres incorpore tablas versionadas por el sistema

  • Expectativa de que la mejora en la integración de JSON en Postgres permita un nuevo paradigma de frameworks web