Lanzamiento de PostgreSQL 18 Beta 1
El Grupo Global de Desarrollo de PostgreSQL anuncia que ya puede descargarse la primera versión beta de PostgreSQL 18. Esta versión ofrece avances de todas las características que contendrá PostgreSQL 18 tras su disponibilidad general, aunque algunos detalles de la versión podrían cambiar durante el periodo beta.
La información sobre todas las características y cambios introducidos en PostgreSQL 18 se encuentra en las notas de la versión:
https://www.postgresql.org/docs/18/release-18.html
De acuerdo con el espíritu de la comunidad de código abierto de PostgreSQL, recomendamos encarecidamente que prueben las nuevas características de PostgreSQL 18 en sus sistemas. Esto nos ayudará a eliminar errores u otros posibles problemas. Aunque no recomendamos ejecutar PostgreSQL 18 Beta 1 en un entorno de producción, les invitamos a encontrar formas de ejecutar esta versión beta con cargas de trabajo típicas de sus aplicaciones.
Sus pruebas y comentarios ayudarán a la comunidad a asegurar que PostgreSQL 18 cumpla con nuestros estándares de entrega de una versión estable y confiable de la base de datos relacional de código abierto más avanzada del mundo. Por favor, lean más sobre nuestro proceso de pruebas beta y cómo pueden contribuir:
https://www.postgresql.org/developer/beta/
Características destacadas de PostgreSQL 18
A continuación se presentan algunas de las características más destacadas que están previstas para PostgreSQL 18. Esta lista no es exhaustiva. Para consultar la lista completa de características planificadas, vean las notas de la versión.
Rendimiento
PostgreSQL 18 introduce un subsistema de E/S asíncrona (AIO). Este nuevo subsistema permite aumentar el rendimiento de E/S y ocultar la latencia de E/S. En Linux, puede utilizarse io_uring
para AIO, mientras que en todas las plataformas está disponible una implementación basada en workers. Esta versión inicial admite operaciones de lectura del sistema de archivos, como escaneos secuenciales, escaneos de mapa de bits y operaciones de vacuum, con pruebas que muestran mejoras de rendimiento de hasta 2-3 veces.
Estas mejoras de rendimiento se extienden a optimizaciones de consultas y nuevas funcionalidades de indexación. PostgreSQL 18 añade soporte para utilizar búsquedas de ‘salto de escaneo’ (skip scan) en índices B-tree multicolumna, lo que puede traducirse en tiempos de ejecución más rápidos para consultas que omiten una condición ‘=’ en una o más columnas prefijo del índice. Esta versión también incluye optimizaciones para cláusulas WHERE
que contienen sentencias OR
e IN (...)
para aprovechar mejor las recientes mejoras en indexación, lo que igualmente puede derivar en un mejor rendimiento de consultas. Además, se incluyen numerosas mejoras de rendimiento en la planificación y ejecución de joins de tablas por parte de PostgreSQL, desde la optimización general de hash joins hasta la capacidad de que los merge joins utilicen ordenamientos incrementales.
PostgreSQL 18 incluye una variedad de características que mejoran el rendimiento en operaciones de consulta y mantenimiento. Entre ellas, destaca el soporte para construcciones en paralelo de índices GIN, comúnmente utilizados en búsquedas sobre datos JSON y de texto completo. Esta versión también permite definir claves de partición y vistas materializadas con índices únicos que no sean B-tree. Además, PostgreSQL 18 mejora el rendimiento general del bloqueo en consultas que acceden a múltiples relaciones e introduce varias optimizaciones para consultas sobre tablas particionadas, incluyendo un mejor pruning y soporte para joins. Otras mejoras de rendimiento incluyen procesamiento de texto más eficiente, con aceleraciones generales en las funciones upper
/lower
y una nueva intercalación integrada: PG_UNICODE_FAST
.
Experiencia de actualización a una versión principal
Antes de PostgreSQL 18, un paso importante después de realizar una actualización de versión principal era ejecutar el comando ANALYZE
para generar estadísticas, un componente crítico que ayuda a PostgreSQL a seleccionar el plan de consulta más eficiente. Dependiendo del tamaño y la actividad general del clúster de PostgreSQL, este proceso podía ser prolongado y potencialmente afectar el rendimiento de las consultas hasta su finalización. PostgreSQL 18 introduce la capacidad de conservar las estadísticas del planificador durante una actualización de versión principal, lo que permite que un clúster actualizado alcance su estado de rendimiento óptimo más rápidamente una vez disponible.
Además, pg_upgrade
, la utilidad utilizada para facilitar la actualización entre versiones principales, incorpora varias mejoras de rendimiento para acelerar las actualizaciones en bases de datos con numerosos objetos, como tablas y secuencias. Esta versión también permite que pg_upgrade procese sus verificaciones en paralelo según la configuración del parámetro --jobs
, e incluye el nuevo parámetro --swap
, que intercambia directorios de actualización en lugar de copiar, clonar o enlazar archivos.
Experiencia para los desarrolladores
PostgreSQL 18 introduce columnas generadas virtuales que calculan los valores de la columna en el momento de la ejecución de consultas, en lugar de requerir su almacenamiento. Esta pasa a ser la opción predeterminada para columnas generadas. Adicionalmente, las columnas generadas almacenadas ahora pueden replicarse de forma lógica.
Esta versión incorpora la capacidad de acceder tanto a los valores anteriores (OLD
) como a los actuales (NEW
) en la cláusula RETURNING
para los comandos INSERT
, UPDATE
, DELETE
y MERGE
. Adicionalmente, PostgreSQL 18 añade soporte para la generación de UUIDv7 mediante la función uuidv7()
, permitiendo generar UUIDs aleatorios con ordenamiento basado en fecha para mejorar estrategias de caché (esta versión también incluye uuidv4()
como alias de gen_rand_uuid
).
Ahora en PostgreSQL 18, es posible realizar comparaciones LIKE
sobre texto que utiliza una intercalación no determinista, lo que facilita la coincidencia de patrones más complejos. Adicionalmente, esta versión introduce CASEFOLD
para ayudar con coincidencias insensibles a mayúsculas/minúsculas.
Esta versión también incorpora restricciones temporales, o restricciones sobre rangos, tanto para las restricciones PRIMARY KEY
y UNIQUE
mediante la cláusula WITHOUT OVERLAPS
, como para las restricciones FOREIGN KEY
utilizando la cláusula PERIOD
.
Características de Seguridad
PostgreSQL 18 introduce la autenticación oauth
, permitiendo a los usuarios autenticarse mediante mecanismos OAuth 2.0 soportados a través de extensiones de PostgreSQL. Adicionalmente, PostgreSQL 18 incorpora varias funciones para validar y aplicar el comportamiento en modo FIPS, y también añade el parámetro ssl_tls13_ciphers
para permitir a los usuarios configurar qué suites de cifrado TLS v1.3 puede utilizar el servidor
Esta versión marca como obsoleta la autenticación de contraseñas md5
, favoreciendo en su lugar el uso de la autenticación SCRAM que se introdujo por primera vez en PostgreSQL 10. La autenticación md5
será eliminada por completo en una futura versión principal. Adicionalmente, PostgreSQL 18 añade soporte para autenticación SCRAM de paso (passthrough) tanto con postgres_fdw
como con dblink
al autenticarse en instancias PostgreSQL remotas.
Monitoreo y observabilidad
PostgreSQL 18 añade más detalles a la utilidad EXPLAIN
, que proporciona información sobre la ejecución del plan de consultas, y a partir de esta versión ahora muestra automáticamente cuántos buffers (la unidad fundamental de almacenamiento de datos) se acceden al ejecutar EXPLAIN ANALYZE
. Adicionalmente, EXPLAIN ANALYZE
ahora muestra cuántas búsquedas de índices ocurren durante un escaneo de índice, y EXPLAIN ANALYZE VERBOSE
incluye estadísticas de CPU, WAL y promedio de lecturas. Esta versión también incorpora información sobre el tiempo total invertido en operaciones VACUUM y ANALYZE de una tabla en pg_stat_all_tables
, y ahora muestra estadísticas por conexión sobre utilización de E/S y WAL.
PostgreSQL 18 también proporciona más información sobre los conflictos de escritura que ocurren durante la replicación lógica, y muestra esta información tanto en los logs como en la vista pg_stat_subscription_stats
.
Otros Aspectos Destacados
A partir de PostgreSQL 18, las sumas de verificación de datos, que se utilizan para validar la integridad de los datos almacenados, ahora están habilitadas por defecto en los nuevos clusters de PostgreSQL. Es posible optar por desactivar este comportamiento utilizando el comando initdb --no-data-checksums
. Hay que tomar en cuenta que esto podría requerir modificaciones en los scripts de actualización.
Además, hay nuevos comportamientos disponibles en varias funciones de restricciones. En primer lugar, tanto las restricciones de clave foránea como las de verificación pueden configurarse como NOT ENFORCED
(no aplicadas) o, inversamente, hacerse aplicables. Asimismo, las restricciones NOT NULL
ahora conservan sus nombres según lo exige el estándar SQL, admiten las cláusulas NOT VALID
y NO INHERIT
, y presentan un comportamiento más coherente con la herencia.
pg_createsubscriber
ahora admite la opción --all
que permite crear réplicas lógicas para todas las bases de datos de una instancia con un solo comando. Adicionalmente, PostgreSQL 18 introduce la capacidad de generar el esquema de una tabla foránea utilizando la definición de una tabla local mediante el comando CREATE FOREIGN TABLE ... LIKE
.
PostgreSQL 18 también introduce una nueva versión (3.2) del protocolo de comunicación de PostgreSQL, siendo esta la primera actualización del protocolo desde PostgreSQL 7.4 (2003). libpq continúa utilizando por defecto la versión 3.0, mientras que los clientes (ej. controladores, poolers, proxies) incorporan soporte para la nueva versión del protocolo.
Características adicionales
Muchas otras nuevas características y mejoras han sido añadidas a PostgreSQL 18. Varias de ellas también pueden ser útiles para sus casos de uso. Para una lista completa de las características nuevas y de las modificadas, consulten las notas de la versión:
https://www.postgresql.org/docs/18/release-18.html
Pruebas de errores y compatibilidad
La estabilidad de cada versión de PostgreSQL depende en gran medida de que ustedes, la comunidad, prueben la próxima versión con sus cargas de trabajo y herramientas de prueba para detectar errores y regresiones antes del lanzamiento oficial de PostgreSQL 18. Dado que se trata de una versión beta, es posible que se produzcan pequeños cambios en los comportamientos de la base de datos, los detalles de las funciones y las API. Sus impresiones y pruebas ayudarán a determinar los ajustes finales de las nuevas funciones, así que les rogamos que la prueben lo antes posible. La calidad de las pruebas de los usuarios contribuirá a definir el momento en el que lanzaremos la versión final.
Una lista de los problemas abiertos está disponible al público en la wiki de PostgreSQL. Pueden reportar errores usando el siguiente formulario en el sitio web de PostgreSQL:
https://www.postgresql.org/account/submitbug/
Calendario de la versión beta
Este es el primer lanzamiento beta de la versión 18. Según lo requieran las pruebas, el Proyecto PostgreSQL publicará betas adicionales. Serán seguidas por una o más versiones candidatas, hasta el lanzamiento final en septiembre u octubre de 2025. Para más información, consulten la página de Pruebas Beta.