PostgreSQL 11: evolució del particionament de Postgres 9.6 a Postgres 11

Que passeu un bon divendres a tothom! Cada cop queda menys temps per començar el curs "DBMS relacional", així que avui compartim la traducció d'un altre material útil sobre el tema.

En fase de desenvolupament PostgreSQL 11 S'ha fet un treball impressionant per millorar la partició de taules. Taules de particions - aquesta és una funció que va existir a PostgreSQL durant força temps, però, per dir-ho així, essencialment no va existir fins a la versió 10, en la qual es va convertir en una funció molt útil. Abans vam dir que l'herència de taules és la nostra implementació de particions, i això és cert. Només aquest mètode us va obligar a fer la major part del treball manualment. Per exemple, si voleu que s'insereixin tuples a les seccions durant els INSERT, haureu de configurar els activadors per fer-ho per vosaltres. La partició mitjançant l'herència era molt lenta i era difícil desenvolupar funcionalitats addicionals.

A PostgreSQL 10, vam veure el naixement de la "partició declarativa", una característica dissenyada per resoldre molts problemes que no es podia resoldre mitjançant l'antic mètode d'herència. Això va donar lloc a una eina molt més potent que ens va permetre dividir les dades horitzontalment!

Comparació de funcions

PostgreSQL 11 introdueix un conjunt impressionant de noves funcions que ajuden a millorar el rendiment i fer que les taules particionades siguin més transparents per a les aplicacions.

PostgreSQL 11: evolució del particionament de Postgres 9.6 a Postgres 11
PostgreSQL 11: evolució del particionament de Postgres 9.6 a Postgres 11
PostgreSQL 11: evolució del particionament de Postgres 9.6 a Postgres 11
1. Ús d'excepcions limitadores
2. Afegeix només nodes
3. Només per a una taula particionada que fa referència a una de no particionada
4. Els índexs han de contenir totes les columnes clau de la partició
5. Les restriccions de secció a ambdós costats han de coincidir

Productivitat

També tenim bones notícies aquí! S'ha afegit un nou mètode eliminant seccions. Aquest nou algorisme pot determinar les seccions adequades mirant la condició de la consulta WHERE. L'algorisme anterior, al seu torn, va comprovar cada secció per determinar si podia complir la condició WHERE. Això va comportar un augment addicional del temps de planificació a mesura que augmentava el nombre de trams.

A la versió 9.6, amb la partició mitjançant herència, l'encaminament de tuples a particions es feia normalment escrivint una funció activadora que contenia una sèrie de sentències IF per inserir la tupla a la partició correcta. Aquestes funcions poden ser molt lentes d'executar. Amb el particionament declaratiu afegit a la versió 10, això funciona molt més ràpid.

Utilitzant una taula particionada amb 100 particions, podem avaluar el rendiment de carregar 10 milions de files en una taula amb 1 columna BIGINT i 5 columnes INT.

PostgreSQL 11: evolució del particionament de Postgres 9.6 a Postgres 11

Rendiment de consultar aquesta taula per trobar un registre indexat i executar DML per manipular un registre (utilitzant només 1 processador):

PostgreSQL 11: evolució del particionament de Postgres 9.6 a Postgres 11

Aquí podem veure que el rendiment de cada operació ha augmentat significativament des de la PG 9.6. Sol·licituds SELECT es veuen molt millor, especialment aquells que són capaços d'excloure diverses particions durant la planificació de consultes. Això vol dir que el planificador pot saltar-se molta feina que hauria d'haver fet abans. Per exemple, ja no es construeixen camins per a trams innecessaris.

Conclusió

El particionament de taules comença a ser una característica molt potent a PostgreSQL. Us permet mostrar ràpidament dades en línia i treure-les fora de línia sense esperar que es completin les operacions DML lentes i massives.. Això també significa que les dades relacionades es poden emmagatzemar junts, el que significa que es pot accedir a les dades que necessiteu de manera molt més eficient. Les millores fetes en aquesta versió no haurien estat possibles sense els desenvolupadors, revisors i committers que van treballar incansablement en totes aquestes funcions.
Gràcies a tots ells! PostgreSQL 11 sembla fantàstic!

Aquí teniu un article tan breu però força interessant. Comparteix els teus comentaris i no t'oblidis de registrar-te Dia obert, dins del qual es detallarà el programa del curs.

Font: www.habr.com

Afegeix comentari