¡PostgreSQL 11! Nuestra primera versión de la nueva versión.

Es posible que sepa que se ha lanzado la nueva versión principal de PostgreSQL lanzado hoy. PostgreSQL 11 será una de las versiones más vibrantes de los últimos tiempos. Incorpora muchas funciones que se encuentran en los sistemas de bases de datos patentados líderes en la industria, e incluso califica a PostgreSQL como una sólida alternativa de código abierto.

Sin más preámbulos, echemos un vistazo a algunas características increíbles en esta nueva versión.

Compilación Just In Time (JIT) de sentencias SQL

Esta es una característica clave en PostgreSQL: las declaraciones SQL se pueden compilar en código nativo para su ejecución. Es bien sabido lo mucho que Google V8 JIT ha revolucionado el lenguaje JavaScript. JIT en PostgreSQL 11 admite la aceleración de dos factores importantes: la evaluación de expresiones y la deformación de tuplas durante la ejecución de consultas, y ayuda a que las consultas de CPU relacionadas funcionen más rápido. Espero que esta sea una nueva era en el mundo SQL.

Creación del índice paralelo B-tree

Esta podría ser la función más buscada por los DBA, especialmente aquellos que migran grandes bases de datos de otros sistemas de bases de datos a PostgreSQL. Atrás quedaron los días en los que se dedicaba mucho tiempo a crear índices durante la migración de datos. Mantener el índice (reconstruir) para tablas muy grandes ahora puede hacer un uso eficiente de múltiples núcleos en el servidor mientras se paraleliza la operación, lo que toma mucho menos tiempo para completar.

ALTER TABLE liviano y súper rápido para la columna NOT NULL con valores DEFAULT

En el proceso de fortalecer y agregar nuevas características continuamente, vemos varios desarrollos de aplicaciones que implican cambios en el esquema de la base de datos. La mayoría de estos cambios incluyen la adición de nueve columnas a una tabla. Esto puede ser una pesadilla si es necesario agregar una nueva columna a una tabla grande con un valor predeterminado y una limitación NOT NULL. Esto se debe a que una declaración ALTER puede mantener un bloqueo de escritura en la tabla durante un largo período de tiempo. También puede implicar un exceso de E/S debido a la reescritura de tablas. PostgreSQL 11 resuelve este problema al garantizar que agregar una columna con un valor predeterminado y una restricción NOT NULL evita que se vuelva a escribir la tabla.

Procedimientos almacenados con control de transacciones

PostgreSQL 11 incluye procedimientos almacenados. Lo que realmente existía en PostgreSQL hasta ahora eran funciones. La falta de procedimientos almacenados nativos en PostgreSQL ha hecho que el código de la base de datos para la migración desde otras bases de datos sea complejo. A menudo requieren un extenso trabajo manual por parte de expertos. Dado que los procedimientos almacenados podían incluir bloques de transacciones con BEGIN, COMMIT y ROLLBACK, era necesario aplicarlos solo para cumplir con este requisito en versiones anteriores de PostgreSQL, pero no más.

Cargar caché en caso de bloqueo o reinicio – pg_prewarm

La memoria se ha vuelto más cara y más rápida, año tras año. La última generación de servidores suele estar disponible con varios cientos de GB de RAM, lo que facilita el uso de grandes cachés (shared_buffers) en PostgreSQL. Hasta la fecha, es posible que haya utilizado pg_prewarm para borrar el caché manualmente (o automáticamente al comienzo del servidor). PostgreSQL 11 ahora incluye un subproceso de trabajo en segundo plano que se encargará de esto por usted, guardando el contenido de shared_buffers, de hecho, la «dirección» de esos, en un archivo. autoprewarm.blocks. Después del bloqueo normal del servidor o la recuperación de reinicio, dos subprocesos de este tipo se ejecutan en segundo plano, recargando esos bloques en el caché.

Partición hash

Hasta PostgreSQL 9.6 usábamos la herencia de tablas para particionar una tabla. PostgreSQL 10 vino con particionamiento de declaración, utilizando dos de los tres métodos de particionamiento más comunes: lista y rango. Y ahora, PostgreSQL 11 ha introducido la pieza que faltaba: la partición hash.

Funciones avanzadas de particionamiento que siempre estuvieron bajo demanda

Hubo varias características nuevas involucradas en el espacio de partición en PostgreSQL 11. Ahora nos permite agregar un índice a una partición determinada incluso si no se comporta como un índice global.

Además, las actualizaciones de fila ahora mueven automáticamente los archivos a nuevas particiones (si es necesario) en función de los campos actualizados. Durante el procesamiento de la aplicación, el optimizador ahora solo puede omitir particiones «no deseadas» del plan de ejecución, lo que simplifica enormemente el trabajo a realizar. Anteriormente, tenía que transmitir todas las particiones, incluso si los datos de destino solo se encontraban en un subconjunto de ellas.

Discutiremos estas nuevas características en detalle en una futura publicación de blog.

Las tablas pueden tener particiones predeterminadas

Hasta PostgreSQL 10, si una tabla no tiene una partición predeterminada, PostgreSQL rechazará una fila cuando la fila que se insertó no cumpliera con ninguna definición de partición existente. Eso cambia con la introducción de particiones predeterminadas en PostgreSQL 11.

Unión hash paralela

La mayoría de SQL con equi-joins hacen hash joins en segundo plano. Existe una gran oportunidad para acelerar el rendimiento si podemos aprovechar el poder del hardware que genera varios trabajadores paralelos. PostgreSQL 11 ahora le permite ejecutar uniones hash en paralelo.

Mejoras en el registro de escritura anticipada (WAL).

Históricamente, PostgreSQL tenía un segmento WAL predeterminado de 16 MB y teníamos que volver a compilar PostgreSQL para operar con segmentos WAL de un tamaño diferente. Ahora es posible para cambiar el tamaño de WAL durante la inicialización del directorio de datos (initdb) o al restablecer WAL con pg_resetwal usando el parámetro –Wal-segsize = .

Agregue extensiones para convertir datos JSONB a/desde PL/Perl y PL/Python

Python como lenguaje de programación continúa ganando popularidad. Sigue estando entre los 5 primeros de la Índice TIOBE. Una de las grandes características de PostgreSQL es que puede escribir funciones y procedimientos almacenados en los lenguajes de programación más populares, incluido Python (con PL/Python). Ahora también es posible transferir el tipo de datos JSONB (JSON binario) a/desde PL/Python. Esta función también estuvo disponible más tarde para PL / Perl. Puede ser un excelente complemento para las organizaciones que usan PostgreSQL como almacén de documentos.

Línea de comandos mejorada en psql: autocompletar y salir/salir

psql siempre ha sido amigable para los usuarios de PostgreSQL por primera vez a través de varias opciones como autocompletar y accesos directos. Sin embargo, hay una excepción: a los usuarios les puede resultar difícil entender cómo salir de psql de manera efectiva y, a menudo, intentan usar los que no existen. quit y exit mandamientos Eventualmente, se enteran q o ctrl + D, pero no sin frustrarse ellos mismos primero. Afortunadamente, esto no debería volver a suceder: entre muchas correcciones y mejoras recientes a psql está la adición de funciones intuitivas quit y exit comandos para salir de forma segura de este popular cliente de línea de comandos.

Estadísticas mejoradas

PostgreSQL 10 introdujo la nueva instrucción CREATE STATISTICS para recopilar más información estadística sobre las columnas de las tablas. Esto se ha mejorado aún más en PostgreSQL 11. Anteriormente, al recopilar estadísticas de optimización, los valores más comunes (MCV) se elegían en función de su importancia en comparación con todas las columnas. Pero ahora, los MCV se eligen en función de su significado en comparación con los valores que no son MCV.

tu nuevas características de PostgreSQL 11 no se limitan a los mencionados anteriormente. Veremos más de ellos en futuras publicaciones de blog. Lo invitamos a dejar un comentario a continuación y dejarnos saber si hay una característica en particular sobre la que le interesaría saber más.

Author: Ing. Luis

A lo largo de conocer Windows y otros sistemas operativos me eh encontrado con diversos tipos de error, ahora brindo soluciones según mi experiencia-

Deja un comentario