PostgreSQL 11: Evolución do particionamento de Postgres 9.6 a Postgres 11

Que teñades un bo venres a todos! Cada vez queda menos tempo para que comece o curso "DBMS relacional", polo que hoxe compartimos a tradución doutro material útil sobre o tema.

En fase de desenvolvemento PostgreSQL 11 Realizouse un traballo impresionante para mellorar a partición da táboa. Táboas de partición - esta é unha función que existiu en PostgreSQL durante bastante tempo, pero que, por así dicilo, esencialmente non existía ata a versión 10, na que se converteu nunha función moi útil. Anteriormente dixemos que a herdanza de táboas é a nosa implementación de partición, e isto é certo. Só este método obrigou a facer a maior parte do traballo manualmente. Por exemplo, se quixeses que se inserisen tuplas en seccións durante os INSERT, terías que configurar os disparadores para facelo por ti. A partición mediante herdanza foi moi lenta e difícil de desenvolver unha funcionalidade adicional.

En PostgreSQL 10, vimos o nacemento da "partición declarativa", unha característica deseñada para resolver moitos problemas que non se podían resolver mediante o antigo método de herdanza. Isto levou a unha ferramenta moito máis poderosa que nos permitiu dividir os datos horizontalmente.

Comparación de características

PostgreSQL 11 introduce un impresionante conxunto de novas funcións que axudan a mellorar o rendemento e facer que as táboas particionadas sexan máis transparentes para as aplicacións.

PostgreSQL 11: Evolución do particionamento de Postgres 9.6 a Postgres 11
PostgreSQL 11: Evolución do particionamento de Postgres 9.6 a Postgres 11
PostgreSQL 11: Evolución do particionamento de Postgres 9.6 a Postgres 11
1. Usando excepcións limitantes
2. Engade só nodos
3. Só para unha táboa particionada que fai referencia a unha non particionada
4. Os índices deben conter todas as columnas clave da partición
5. As restricións dos dous lados deben coincidir

Produtividade

Aquí tamén temos boas novas! Engadiuse un novo método eliminando seccións. Este novo algoritmo pode determinar seccións adecuadas mirando a condición da consulta WHERE. O algoritmo anterior, pola súa banda, comprobou cada sección para determinar se podía cumprir a condición WHERE. Isto deu lugar a un aumento adicional do tempo de planificación ao aumentar o número de seccións.

Na versión 9.6, coa partición mediante herdanza, o enrutamento de tuplas en particións normalmente facíase escribindo unha función de activación que contiña unha serie de instrucións IF para inserir a tupla na partición correcta. Estas funcións poden ser moi lentas de executar. Coa partición declarativa engadida na versión 10, isto funciona moito máis rápido.

Usando unha táboa particionada con 100 particións, podemos avaliar o rendemento de cargar 10 millóns de filas nunha táboa con 1 columna BIGINT e 5 columnas INT.

PostgreSQL 11: Evolución do particionamento de Postgres 9.6 a Postgres 11

Rendemento de consultar esta táboa para atopar un rexistro indexado e executar DML para manipular un rexistro (usando só 1 procesador):

PostgreSQL 11: Evolución do particionamento de Postgres 9.6 a Postgres 11

Aquí podemos ver que o rendemento de cada operación aumentou significativamente desde a PG 9.6. Solicitudes SELECT parecen moito mellor, especialmente aqueles que son capaces de excluír varias particións durante a planificación de consultas. Isto significa que o programador pode saltar moito traballo que debería ter feito antes. Por exemplo, xa non se constrúen camiños para tramos innecesarios.

Conclusión

A partición de táboas comeza a converterse nunha función moi poderosa en PostgreSQL. Permítelle mostrar rapidamente os datos en liña e levalos fóra de liña sen esperar a que se completen as operacións DML lentas e masivas.. Isto tamén significa que os datos relacionados pódense almacenar xuntos, o que significa que se pode acceder aos datos que necesitas dun xeito moito máis eficiente. As melloras realizadas nesta versión non serían posibles sen os desenvolvedores, revisores e committers que traballaron incansablemente en todas estas funcións.
Grazas a todos eles! PostgreSQL 11 parece fantástico!

Aquí tes un artigo tan breve pero moi interesante. Comparte os teus comentarios e non esquezas rexistrarte Xornada de portas abertas, dentro do cal se detallará o programa do curso.

Fonte: www.habr.com

Engadir un comentario