- 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
Opiniones de Hacker News
Felicitaciones por el nuevo lanzamiento de PostgreSQL 17 junto con la mención de varias mejoras
pg_basebackupy adición de la utilidadpg_combinebackupOpiniones sobre la utilidad de las funciones JSON
Se comparte experiencia de uso de la función JSON_TABLE
jsonby escribir vistas para analizarlasSe mencionan mejoras de rendimiento y de UX en PostgreSQL 17
Impresiones sobre el registro de cambios
Se comparte la experiencia de haber migrado de Oracle a MSSQL por problemas de confianza en el software de código abierto
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