PostgreSQL 11: Evolución del particionamiento de Postgres 9.6 a Postgres 11

¡Que tengan todos un excelente viernes! Cada vez queda menos tiempo para el lanzamiento del curso "DBMS relacional", por eso hoy compartimos la traducción de otro material útil sobre el tema.

En desarrollo PostgreSQL 11 Se ha realizado un trabajo impresionante para mejorar la partición de tablas. Tablas de partición - esta es una función que existió en PostgreSQL durante bastante tiempo, pero, por así decirlo, esencialmente no existió hasta la versión 10, en la que se convirtió en una función muy útil. Anteriormente dijimos que la herencia de tablas es nuestra implementación de la partición, y esto es cierto. Sólo que este método te obligaba a realizar la mayor parte del trabajo manualmente. Por ejemplo, si desea que se inserten tuplas en secciones durante las INSERT, deberá configurar activadores para que lo hagan por usted. La partición mediante herencia era muy lenta y difícil de desarrollar funciones adicionales.

En PostgreSQL 10, vimos el nacimiento de la "partición declarativa", una característica diseñada para resolver muchos problemas que eran irresolubles usando el antiguo método de herencia. ¡Esto llevó a una herramienta mucho más poderosa que nos permitió dividir los datos horizontalmente!

Comparación de características

PostgreSQL 11 presenta un impresionante conjunto de características nuevas que ayudan a mejorar el rendimiento y hacer que las tablas particionadas sean más transparentes para las aplicaciones.

PostgreSQL 11: Evolución del particionamiento de Postgres 9.6 a Postgres 11
PostgreSQL 11: Evolución del particionamiento de Postgres 9.6 a Postgres 11
PostgreSQL 11: Evolución del particionamiento de Postgres 9.6 a Postgres 11
1. Uso de excepciones limitantes
2. Agrega solo nodos
3. Solo para una tabla particionada que haga referencia a una no particionada
4. Los índices deben contener todas las columnas clave de la partición.
5. Las restricciones de sección en ambos lados deben coincidir

Rendimiento

¡Aquí también tenemos buenas noticias! Nuevo método agregado eliminando secciones. Este nuevo algoritmo puede determinar las secciones adecuadas observando la condición de consulta. WHERE. El algoritmo anterior, a su vez, comprobó cada sección para determinar si podía cumplir la condición WHERE. Esto resultó en un aumento adicional en el tiempo de planificación a medida que aumentaba el número de secciones.

En 9.6, con la partición mediante herencia, el enrutamiento de tuplas a particiones generalmente se hacía escribiendo una función de activación que contenía una serie de declaraciones IF para insertar la tupla en la partición correcta. Estas funciones pueden tardar mucho en ejecutarse. Con la partición declarativa agregada en la versión 10, esto funciona mucho más rápido.

Usando una tabla particionada con 100 particiones, podemos evaluar el rendimiento de cargar 10 millones de filas en una tabla con 1 columna BIGINT y 5 columnas INT.

PostgreSQL 11: Evolución del particionamiento de Postgres 9.6 a Postgres 11

Rendimiento de consultar esta tabla para encontrar un registro indexado y ejecutar DML para manipular un registro (usando solo 1 procesador):

PostgreSQL 11: Evolución del particionamiento de Postgres 9.6 a Postgres 11

Aquí podemos ver que el rendimiento de cada operación ha aumentado significativamente desde PG 9.6. Peticiones SELECT se ven mucho mejor, especialmente aquellos que son capaces de excluir múltiples particiones durante la planificación de consultas. Esto significa que el planificador puede saltarse una gran cantidad de trabajo que debería haber realizado antes. Por ejemplo, ya no se construyen caminos para secciones innecesarias.

Conclusión

La partición de tablas está empezando a convertirse en una característica muy poderosa en PostgreSQL. Le permite mostrar datos en línea rápidamente y desconectarlos sin esperar a que se completen operaciones DML lentas y masivas.. Esto también significa que los datos relacionados se pueden almacenar juntos, lo que significa que se puede acceder a los datos que necesita de manera mucho más eficiente. Las mejoras realizadas en esta versión no habrían sido posibles sin los desarrolladores, revisores y confirmadores que trabajaron incansablemente en todas estas características.
¡Gracias a todos ellos! ¡PostgreSQL 11 se ve fantástico!

Aquí tenéis un artículo tan breve pero bastante interesante. Comparte tus comentarios y no olvides registrarte Dia abierto, dentro del cual se detallará el programa del curso.

Fuente: habr.com

Añadir un comentario