PostgreSQL 16 se lanzó el 14 de septiembre de 2023, manteniendo la cadencia anual de la comunidad. Aunque ninguna de sus novedades es revolucionaria por sí sola, el conjunto refleja la madurez del proyecto: cada release pule áreas concretas que sus usuarios sentían como fricciones. Cubrimos las novedades que realmente cambian el día a día en producción.
Replicación lógica desde standby
La novedad más esperada por equipos con clusters grandes. Hasta Postgres 15, la replicación lógica (CDC, change data capture) solo podía hacerse desde el primario — añadiendo carga al nodo más crítico.
Postgres 16 permite establecer suscripciones lógicas con un standby como origen. Implicaciones prácticas:
- Pipelines ETL y CDC que no añaden carga al primario.
- Replicación cross-region desde un standby local en vez de tener que cruzar continentes desde el primario.
- Topologías de fan-out donde un standby alimenta a varios consumers lógicos.
Para equipos con un primario sobrecargado y varios consumidores Kafka/Debezium, este cambio reduce significativamente la presión sobre el primary.
Mejoras de rendimiento en queries paralelas
Postgres ha mejorado paralelismo en cada release reciente; en 16 destaca:
FULL OUTER JOINparalelo. Antes era serial; ahora puede usar workers paralelos. Mejora drástica en queries analíticas.JOINcon filtros más complejos que ahora soportan paralelismo donde antes no.- Mejor planning de window functions, especialmente cuando se combinan con agregaciones.
Para queries OLAP o reports complejos, el cambio es notable sin tocar nada en tu código.
pg_stat_io: la nueva ventana al I/O
Una de las novedades de observabilidad más útiles. La vista pg_stat_io rompe el I/O de Postgres por tipo de operación (read, write, extend, fsync) y contexto (normal, vacuum, bulk read/write).
SELECT backend_type, object, context, reads, writes, hits
FROM pg_stat_io
ORDER BY reads DESC;
Por primera vez puedes responder con datos: ¿quién está consumiendo el I/O — VACUUM, bulk loads o queries normales? ¿Mi shared buffers tienen suficiente hit ratio? ¿Hay actividad de extend (extensión de tabla) excesiva?
Es una mejora fundamental para diagnóstico de performance que antes requería herramientas externas o instrumentación manual.
Nuevas funciones SQL
Mejoras en sintaxis que ahorran código de aplicación:
SQL/JSON constructorsestándar (JSON_OBJECT, JSON_ARRAY, IS JSON). Más portable entre BD que las funciones específicas de Postgres antiguas.array_sample()yarray_shuffle(). Útiles para sampling sin tener que construir consultas elaboradas.- Mejor soporte de regex en patrones COLLATE — sortings personalizados más expresivos.
Mejoras en la replicación física
Para clusters más operacionales:
pg_basebackupparalelo. Backups iniciales más rápidos en clusters grandes.- Compresión LZ4 y Zstandard integrada en
pg_dumpypg_restore. Antes había que combinar con tuberías externas. - Estadísticas mejoradas en
pg_stat_replication— más detalle sobre lag y estado de cada replica.
Cambios pequeños individualmente, pero acumulan en operaciones diarias.
Funciones administrativas
Mejoras a la administración día a día:
pg_locksmejorado con granularidad sobre tipos de lock que antes eran opacos.- VACUUM con feedback de progreso más detallado vía
pg_stat_progress_vacuum. - Logical decoding más robusto ante interrupciones — recovery más limpio tras un fallo.
Cambios menos visibles pero importantes
Algunos cambios internos importantes para casos avanzados:
io_methodparámetro experimental para pruebas conio_uringen Linux. Promete mejoras significativas en throughput de I/O.CREATE TABLE LIKEmejorado con más opciones de qué heredar (constraints, indexes, statistics).- Compresión de transacciones grandes en logical replication — menos bandwidth en replicación lógica.
Cuándo migrar
PostgreSQL 16 es solid release. Para producción:
- Si estás en 15: la migración es relativamente sencilla, sin cambios disruptivos. Vale la pena planificarla en los próximos 6 meses para aprovechar
pg_stat_ioy replicación lógica desde standby. - Si estás en 14 o anterior: prioriza migrar a 15 o 16 según tu calendario operativo. Las versiones más antiguas se acercan a end-of-life.
- Si estás en 13: 13 perderá soporte en noviembre de 2025. Empieza a planificar.
Para nuevos proyectos en 2023, empieza directamente en 16. No hay razón para arrancar en una versión anterior.
Cosas a verificar antes de migrar
Lecciones operativas para una migración limpia:
- Extensiones. Verifica que cada extensión que usas (PostGIS, pgvector, TimescaleDB, etc.) tiene versión compatible con 16.
- Drivers. Drivers cliente antiguos pueden tener problemas con autenticación SCRAM por defecto.
- Backups: prueba
pg_dumpdesde 16 hacia versión menor antes de comprometer (compatibilidad hacia atrás funciona pero conviene validar). - Replicación lógica existente: la migración de subscriber/publisher requiere coordinación con sus contrapartes.
Conclusión
PostgreSQL 16 no transforma cómo usas la base de datos; mejora puntos concretos que cualquier operador de Postgres en producción agradecerá. Replicación lógica desde standby, pg_stat_io y mejoras de paralelismo son las tres novedades que justifican planificar la migración desde 14 o 15. Para equipos en 13 o anterior, además, el plazo de end-of-life acerca la urgencia.
Síguenos en jacar.es para más sobre PostgreSQL, operación de bases de datos y arquitecturas de datos.