Lanzamiento de PostgreSQL 18
El Grupo Global de Desarrollo de PostgreSQL ha anunciado hoy el lanzamiento de PostgreSQL 18, la versión más reciente de la base de datos de código abierto más avanzada del mundo. Las traducciones de este comunicado de prensa están disponibles en el kit de prensa de PostgreSQL 18.
PostgreSQL 18 mejora el rendimiento para cargas de trabajo de todos los tamaños gracias a un nuevo subsistema de E/S, que ha demostrado un incremento del rendimiento de hasta tres veces al leer desde el almacenamiento, y además aumenta la cantidad de consultas que pueden utilizar índices. Esta versión hace que las actualizaciones de versión principal sean menos disruptivas, acelerando los tiempos de actualización y reduciendo el tiempo necesario para alcanzar el rendimiento esperado una vez completada la actualización. Los desarrolladores también se benefician de las funciones de PostgreSQL 18, que incluyen columnas generadas virtuales que calculan valores en el momento de la consulta, y la función uuidv7()
optimizada para bases de datos, que ofrece un mejor indexado y mayor rendimiento en lecturas de UUIDs. PostgreSQL 18 también facilita la integración con sistemas de inicio de sesión único (SSO) al incorporar soporte para la autenticación OAuth 2.0.
«Los esfuerzos de la comunidad global de código abierto dan forma a cada versión de PostgreSQL y ayudan a ofrecer características que responden a las necesidades de los usuarios allí donde están sus datos», dijo Jonathan Katz, miembro del Core Team de PostgreSQL. «PostgreSQL 18 continúa la extensa tradición del proyecto de ofrecer una experiencia de gestión de datos robusta y confiable, mientras amplía las cargas de trabajo que está en capacidad de manejar».
PostgreSQL es un innovador sistema de gestión de datos conocido por su confiabilidad, robustez y extensibilidad. Cuenta con casi 30 años de desarrollo de código abierto por parte de una comunidad global de desarrolladores y se ha convertido en la base de datos relacional de código abierto preferida por organizaciones de todos los tamaños.
Nueva E/S asíncrona
PostgreSQL dependía anteriormente de los mecanismos de readahead (lectura anticipada) del sistema operativo para acelerar la lectura de datos. Sin embargo, como los sistemas operativos carecen de conocimiento sobre los patrones de acceso específicos de la base de datos, no siempre pueden anticipar qué datos serán necesarios, lo que provoca un rendimiento inferior en muchas cargas de trabajo.
PostgreSQL 18 incorpora un nuevo subsistema de entrada/salida asíncrona (AIO) que resuelve esta limitación. Gracias a AIO, PostgreSQL puede enviar varias solicitudes de entrada/salida al mismo tiempo, en lugar de procesarlas una tras otra. Esto potencia el readahead ya existente y eleva el rendimiento general. En esta versión, AIO es compatible con escaneos secuenciales, escaneos bitmap heap y vacuum. Según pruebas de referencia, en ciertos escenarios el rendimiento puede triplicarse.
La nueva opción io_method
hace posible elegir entre distintos métodos de AIO, como worker
e io_uring
, o mantener el comportamiento tradicional de PostgreSQL usando sync
. Además, AIO incorpora ahora más parámetros que se pueden ajustar, los cuales se explican con mayor detalle en la documentación.
Actualizaciones más rápidas, mejor rendimiento tras la actualización
Una característica clave de PostgreSQL es la generación y almacenamiento de estadísticas que ayudan a seleccionar el plan de consulta más eficiente. Antes de PostgreSQL 18, estas estadísticas no se conservaban tras una actualización de versión principal, lo que podía ocasionar degradaciones importantes en el rendimiento de las consultas en sistemas con alta carga hasta que finalizara la ejecución de ANALYZE
PostgreSQL 18 introduce la posibilidad de mantener las estadísticas del planificador durante una actualización de versión principal, lo que permite que un clúster actualizado alcance más rápidamente el rendimiento esperado después de la actualización.
Asimismo, pg_upgrade
, la herramienta encargada de realizar actualizaciones de versiones principales, incorpora diversas mejoras en PostgreSQL 18. Entre ellas se incluyen procesos de actualización más rápidos cuando la base de datos contiene numerosos objetos, como tablas y secuencias. Con esta versión pg_upgrade
también puede ejecutar las comprobaciones en paralelo a partir del ajuste del parámetro --jobs
, y se introduce la opción --swap
que permite intercambiar directorios de actualización en lugar de copiar, clonar o enlazar archivos.
Mejoras en las consultas y el rendimiento general
PostgreSQL 18 impulsa todavía más la velocidad de ejecución de las consultas gracias a nuevas funciones que aceleran automáticamente las cargas de trabajo. Entre las novedades se encuentra la búsqueda “skip scan” en índices B-tree multicolumna que mejora el rendimiento de consultas donde no se especifica una condición de igualdad en una o varias de las columnas iniciales del índice. También se optimizan las consultas que utilizan condiciones OR
en el WHERE
permitiendo el uso de índices y logrando así ejecuciones mucho más rápidas. Igualmente, se han incorporado múltiples mejoras en la planificación y ejecución de joins entre tablas, como un mayor rendimiento en los hash joins y la posibilidad de que los merge joins utilicen ordenamientos incrementales. Además, PostgreSQL 18 incorpora la creación paralela de índices GIN, al igual que ya ocurre con los índices B-tree y BRIN.
Esta versión amplía las capacidades de PostgreSQL en aceleración por hardware, lo que incluye soporte para los intrínsecos de las CPU ARM NEON y SVE para la función popcount
que es utilizada por bit_count
y otras funcionalidades internas.
Mejorando la experiencia del desarrollador
PostgreSQL 18 introduce columnas generadas virtuales que calculan los valores al ejecutar la consulta, en lugar de almacenarlos. Esta es ahora la opción predeterminada para las columnas generadas. Adicionalmente, las columnas generadas almacenadas ahora pueden replicarse lógicamente.
Con esta versión ahora es posible acceder a los valores previos (OLD
) y actuales (NEW
) dentro de la cláusula RETURNING
en los comandos INSERT
, UPDATE
, DELETE
y MERGE
. PostgreSQL 18 también incorpora la generación de UUIDv7 mediante la función uuidv7()
lo que permite crear UUIDs aleatorios organizados por marca de tiempo, con el fin de facilitar la implementación de mejores estrategias de almacenamiento en caché. Asimismo, uuidv4()
pasa a estar disponible como alias de gen_random_uuid()
.
PostgreSQL 18 añade restricciones temporales — restricciones sobre rangos — tanto para las restricciones PRIMARY KEY
y UNIQUE
mediante la cláusula WITHOUT OVERLAPS
, como para las restricciones FOREIGN KEY
mediante la cláusula PERIOD
.
Por último, PostgreSQL 18 simplifica la creación de la definición de esquema de una tabla foránea usando como referencia la definición de una tabla local a través del comando CREATE FOREIGN TABLE ... LIKE
.
Procesamiento de texto mejorado
Con PostgreSQL 18, el procesamiento de texto ahora es más sencillo y veloz gracias a múltiples mejoras. Entre ellas destaca la nueva intercalación PG_UNICODE_FAST
que garantiza semántica Unicode completa en las transformaciones de mayúsculas y minúsculas y, además, agiliza numerosas comparaciones. Esto abarca las funciones de comparación de cadenas upper
y lower
, además de la nueva función casefold
, diseñada para comparaciones sin distinción entre mayúsculas y minúsculas. Además, PostgreSQL 18 ahora admite la realización de comparaciones con LIKE
sobre texto que utiliza una intercalación no determinista, lo que simplifica la ejecución de patrones de búsqueda más complejos. Esta versión también modifica la búsqueda de texto completo para que use el proveedor de intercalación predeterminado del clúster en lugar de usar siempre libc, lo que puede requerir reindexar todas las búsquedas de texto completo y los índices de pg_trgm
después de ejecutar pg_upgrade
.
Características de autenticación y seguridad
Con PostgreSQL 18 llega la autenticación oauth
, que permite a los usuarios iniciar sesión utilizando mecanismos de OAuth 2.0 compatibles mediante extensiones de PostgreSQL. Asimismo, esta versión incorpora la validación del modo FIPS y añade el parámetro ssl_tls13_ciphers
, destinado a configurar las suites de cifrado de TLS v1.3 en el servidor.
Esta versión marca como obsoleta la autenticación con contraseñas md5, la cual desaparecerá en futuras versiones. Para autenticación con contraseñas en PostgreSQL se recomienda usar la autenticación SCRAM. PostgreSQL 18 también admite la autenticación SCRAM passthrough tanto con postgres_fdw
como con dblink
para autenticar instancias remotas de PostgreSQL. Además, pgcrypto
ahora admite el cifrado SHA-2 para el hash de contraseñas.
Replicación
PostgreSQL 18 admite la notificación de conflictos de escritura en la replicación lógica tanto en los registros como en la vista pg_stat_subscription_stats
. Además, ahora el comando CREATE SUBSCRIPTION
usa por defecto la transmisión en paralelo para aplicar transacciones, lo que puede contribuir a mejorar el rendimiento. La utilidad pg_createsubscriber
ahora incluye la opción --all
que permite crear réplicas lógicas de todas las bases de datos de una instancia con un solo comando. PostgreSQL 18 también permite eliminar automáticamente los slots de replicación inactivos evitando así almacenar un exceso de archivos de registro WAL en el editor.
Mantenimiento y observabilidad
PostgreSQL 18 optimiza su estrategia de vacuum al congelar preventivamente un mayor número de páginas durante los vacuum habituales, lo que disminuye la sobrecarga y resulta útil en escenarios que demandan vacuum más intensivos.
PostgreSQL 18 agrega más detalles a 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
. Además, EXPLAIN ANALYZE
ahora indica cuántas búsquedas en índices se realizan durante un escaneo de índice, y EXPLAIN ANALYZE VERBOSE
incluye estadísticas de CPU, WAL y lecturas promedio. PostgreSQL 18 también incorpora más información en pg_stat_all_tables
sobre el tiempo invertido en vacuum y operaciones relacionadas, así como estadísticas por conexión sobre el uso de E/S y WAL.
Otros cambios destacados
A partir de PostgreSQL 18, las bases de datos que se inicialicen con initdb
tendrán activadas por defecto las sumas de verificación de página (page checksums). Esto puede afectar a las actualizaciones desde clústeres que no las tuvieran habilitadas, lo que obligaría a crear un nuevo clúster de PostgreSQL 18 usando la opción --no-data-checksums
durante el proceso de pg_upgrade
.
PostgreSQL 18 también introduce una nueva versión (3.2) del protocolo de conexión de PostgreSQL (wire protocol), siendo la primera nueva versión del protocolo desde PostgreSQL 7.4 (2003). libpq
sigue utilizando la versión 3.0 por defecto, mientras que los clientes (p. ej., controladores, poolers, proxies) añaden soporte para la nueva versión del protocolo.
Características adicionales
Se han añadido numerosas nuevas características y mejoras a PostgreSQL 18 que podrían ser útiles en diferentes casos de uso. Consulten las notas de la versión para obtener una lista completa de las características nuevas y modificadas.
Sobre PostgreSQL
PostgreSQL es la base de datos de código abierto más avanzada del mundo, que cuenta con una comunidad global de miles de usuarios, contribuidores, empresas y organizaciones. Desde sus inicios en la Universidad de California, Berkeley, hace más de 40 años, PostgreSQL ha continuado con un ritmo de desarrollo inigualable. El maduro conjunto de características de PostgreSQL no sólo iguala a los principales sistemas de bases de datos propietarios, sino que los supera en términos de características avanzadas, extensibilidad, seguridad y estabilidad.