Secreto exclusivo | Alibaba Cloud AnalyticDB AnalyticDB Nueva generación de tecnología de optimización CBO

 

01. Descripción general

Para la base de datos, los dos módulos principales son: optimizador y motor de ejecución. El optimizador es responsable de proporcionar información al motor de ejecución. Recibe el árbol AST analizado desde el analizador de SQL, y luego debe seleccionar el plan más costoso de todos los planes posibles y proporcionarlo al motor de ejecución. El optimizador basado en costos es esencialmente un problema de búsqueda complejo. Para resolver este problema, debe comenzar desde cuatro direcciones:

1) Marco de búsqueda: dado que es un problema de búsqueda, entonces se necesita un marco de búsqueda para llevar este problema. Desde la perspectiva del desarrollo de la base de datos, el marco de búsqueda basado en Cascades se ha convertido en el estándar de la industria, incluida la base de datos comercial SQL Server y la base de datos de código abierto GP / ORCA, todos implementados usando Cascades. AnalyticDB CBO también se basa en el papel Cascades.

2) Plan paralelo distribuido: en comparación con la base de datos independiente tradicional, AnalyticDB es una base de datos MPP distribuida, y el plan generado por el optimizador es un plan paralelo distribuido. Por lo tanto, es necesario combinar la generación del plan paralelo distribuido y el marco de búsqueda para seleccionar el mejor plan paralelo distribuido en función del costo.

3) Estimación de costos: la estimación de costos es el factor clave para que el optimizador encuentre el plan óptimo.Si la estimación de costos no es buena, el optimizador no puede hacerlo bien. La estimación de costos implica la derivación de información estadística y modelos de costos. La derivación de información estadística depende de: la información estadística de la tabla original, el algoritmo de derivación del operador intermedio, varios supuestos sobre los datos (suposición de uniformidad, suposición de independencia, suposición inclusiva, suposición inclusiva) y, en algunos casos extremos Adivina Por lo tanto, existen muchas incertidumbres en la derivación de información estadística, precisamente debido a estas incertidumbres, lo que agrava en gran medida la dificultad del optimizador para encontrar la solución óptima.

4) Recopilación de información estadística: la recopilación de la información estadística necesaria es la premisa del trabajo de CBO. La relación entre CBO e información estadística es como la relación entre un arma y municiones. No importa cuán bueno sea el arma, si no hay suficiente munición, es equivalente a Una mujer inteligente no puede cocinar sin arroz. Es necesario lograr la información estadística: la información básica se puede recopilar y actualizar automáticamente, y la información estadística avanzada se puede recopilar manualmente para proporcionar información estadística confiable y multidimensional para CBO.

 

02. Arquitectura

 

 

 

Marco de búsqueda

El marco de búsqueda se encuentra en una posición muy central en toda la CBO. Llamará al marco de Aplicación de la Propiedad para generar un plan de ejecución distribuido, y luego llamará al módulo de estimación de costos para evaluar el costo de cada plan de ejecución distribuido candidato y finalmente elegir el mejor en función del costo. Plan de ejecución distribuido. El marco de búsqueda incluye las siguientes partes:

Memo representa el espacio de búsqueda: para un plan de consulta, primero debe inicializarlo para formar un espacio de búsqueda inicial. A medida que avanza la búsqueda, el espacio de búsqueda continuará expandiéndose. Dado que el espacio de búsqueda será muy grande, Memo debe almacenarse de manera eficiente.

La búsqueda representa el algoritmo de búsqueda: el algoritmo de búsqueda consta de tres partes, la primera parte se usa para atravesar recursivamente el espacio de búsqueda, la segunda parte se usa para invocar las reglas de expansión para generar un nuevo plan candidato equivalente, el espacio de búsqueda se expande y la tercera parte se usa para derivar Los atributos del plan distribuido requieren y calculan el valor de generación, y luego buscan el plan de ejecución distribuido óptimo.

El programador representa el programador que programa el algoritmo de búsqueda: en la versión actual de AnalyticDB CBO, se basa en la implementación de un solo hilo y la pila: la tarea de búsqueda se inserta en una pila, y luego las tareas en la pila se recuperan cíclicamente hasta que finaliza la tarea.

Teniendo en cuenta que otros productos optimizadores de código abierto, como ORCA, mencionaron el concepto de búsqueda paralela multiproceso, reservamos la interfaz del programador multiproceso. En comparación con los muchos problemas difíciles del optimizador, su prioridad no es tan alta. Los beneficios de implementar la búsqueda paralela son muy obvios. Puede reducir significativamente el tiempo de ejecución de la programación de tareas y dar un juego completo al paralelismo multinúcleo. Desde la perspectiva de la consulta completa, puede acortar el tiempo dedicado a la optimización de la consulta, reduciendo así la consulta general . Sin embargo, el problema de la sincronización de subprocesos causado por la búsqueda paralela y el problema del procesamiento de dependencia entre subprocesos siguen siendo muy desafiantes.

La regla representa la regla de expansión: la regla de expansión se usa para generar un plan candidato equivalente, y el plan candidato equivalente se colocará en Memo para formar un espacio de búsqueda completo. Las reglas de expansión determinan cuántos planes candidatos puede expandir el optimizador, por lo que los tipos de reglas de expansión y la eficiencia algorítmica de cada regla de expansión también son cruciales para CBO. Cuantos más tipos de reglas de expansión, más perfecto sea el espacio de búsqueda y más probable sea encontrar la solución óptima, al mismo tiempo, cuanto más eficiente sea el algoritmo de cada regla de expansión, más eficiente será generar un espacio de búsqueda completo y más rápida será la optimización de la consulta.

 

Plan paralelo distribuido

En comparación con la base de datos independiente tradicional, la base de datos MPP distribuida presenta nuevos desafíos para el optimizador. En la base de datos MPP distribuida, el atributo de distribución de los datos se vuelve muy importante, afectará directamente la exactitud de los datos. Para cumplir con los requisitos de distribución de datos de diferentes operadores, a menudo necesitamos redistribuir los datos.

Sin embargo, la redistribución de datos, es decir, el costo de la mezcla aleatoria de datos es muy costosa, por lo tanto, bajo la premisa de garantizar la precisión de los datos, reducir la mezcla aleatoria de datos tanto como sea posible puede mejorar en gran medida el rendimiento del plan distribuido. Como un optimizador de base de datos MPP distribuido, es necesario tomar el atributo Particionamiento de los datos, así como los atributos de Clasificación y Agrupación en el espacio de búsqueda para una consideración exhaustiva, y seleccionar el plan óptimo de ejecución paralela distribuida en función del costo.

Por lo tanto, diseñamos e implementamos un marco completo de Aplicación de la Propiedad para describir los requisitos de distribución de datos de los planes distribuidos en escenarios distribuidos. Al mismo tiempo, combinamos a la perfección el proceso de Aplicación de la Propiedad y el marco de búsqueda para implementar una CBO para bases de datos MPP distribuidas.

 

Costo estimado

La estimación de costos es un factor clave para la calidad de toda la CBO. Solo cuando la estimación de costos se realiza bien, la CBO puede elegir el mejor plan. Incluye tres partes.

Las estadísticas se utilizan para describir las estadísticas de la tabla original. Incluyendo estadísticas de nivel de tabla Recuento de filas, estadísticas de campo individuales: valor NDV (valor distinto), valor máximo, valor mínimo, valor NULO, valor de histograma (información de distribución, para consulta de intervalo), recuento-mínimo Valor de boceto (para consulta equivalente), valor de DataSize. Resumimos esta información estadística como información estadística básica, que debe recopilarse y actualizarse automáticamente.

Al mismo tiempo, teniendo en cuenta la influencia de factores como la correlación entre múltiples campos, el agotamiento funcional y la inclinación de los datos en la estimación de la información estadística, también se proporciona una herramienta de línea de comando para recopilar esta información manualmente. Para esta información que debe recopilarse manualmente, colocamos Se resume como información estadística de alto nivel, que solo debe recopilarse manualmente cuando sea necesario. Además, para algunos predicados complejos, como like, incluso si se recopila el histograma, este escenario no puede ser compatible, por lo que también obtendremos la información estadística correspondiente basada en el muestreo dinámico en tiempo de ejecución.

La derivación de estadísticas se utiliza para derivar información estadística después de cada operador. La derivación de información estadística depende de la información estadística de la tabla original, las fórmulas matemáticas, los supuestos sobre los atributos de los datos (por ejemplo, la distribución de datos es uniforme y la tasa de selección entre varias columnas no está relacionada) y, en casos extremos, la heurística Suposición (por ejemplo, para un UDF definido por el usuario, su tasa de selección solo puede recibir un valor predeterminado).

La derivación de información estadística es muy importante para el optimizador, que también ha sido un centro de investigación en el mundo académico. Esencialmente, solo romper los supuestos sobre los atributos de los datos puede dar a conocer la estimación de la información estadística, pero romper estos supuestos depende del análisis de los datos originales para generar más información estadística dimensional. Debe haber más costos.

El modelo de costo representa el modelo de costo. El trabajo del modelo de costos debe basarse en la derivación de información estadística razonable, de lo contrario su importancia no será grande. El modelo de costos debe evaluar el modelo de cálculo real y convertir la información estadística en un valor sustitutivo cuantificable, a fin de proporcionar una base para que el optimizador tome decisiones.

 

Recolección de información estadística.

El análisis se utiliza para recopilar información estadística. Para las bases de datos comerciales, con el fin de mejorar la experiencia del usuario y hacerlo de forma inmediata, todos están comprometidos con el análisis automático, que es la automatización de la recopilación de información estadística y la actualización automática. Pero la colección en sí tiene un precio, por lo que dividimos la información estadística en dos categorías: información estadística básica e información estadística avanzada.

Las estadísticas básicas se mencionan anteriormente: recuento de filas de estadísticas a nivel de tabla, estadísticas de campo individuales: valor NDV (valor distintivo), valor máximo, valor mínimo, valor NULO, valor de histograma (información de distribución, uso Para consulta de intervalo), valor de boceto de recuento-min (utilizado para consulta equivalente), valor de tamaño de datos. La información estadística básica se debe recopilar y actualizar automáticamente, de lo contrario es probable que la falta de esta información estadística haga que el optimizador produzca un plan catastrófico.

Al mismo tiempo, para mejorar la calidad de la toma de decisiones del optimizador en situaciones complejas, también se proporcionan algunos comandos avanzados para recopilar información estadística más compleja, por ejemplo, las estadísticas del grupo de columnas se pueden recopilar para obtener la información de correlación entre múltiples campos. Las estadísticas avanzadas deben activarse manualmente para recopilar, solo cuando sea necesario.

Recopilar información estadística basada en el comando Analizar, ya sea una recopilación automática o manual, en esencia, es un proceso independiente: Analizar llamará a la tarea de Perfiles de datos para analizar los datos originales, generar información estadística y almacenarla en Metadatos En la biblioteca

Teniendo en cuenta la situación real, puede haber algunas condiciones de consulta muy complicadas, ya sea información estadística básica o información estadística avanzada, no es posible hacer una estimación razonable de la misma. En este momento, el muestreo dinámico puede tener su papel Valor, el muestreo dinámico enviará muestras en tiempo real, obtendrá la información estadística necesaria y mejorará la calidad de la toma de decisiones del optimizador.

En segundo lugar, el muestreo dinámico también se puede utilizar como una estrategia para recopilar información estadística. Cuando la información estadística básica no se recopila por alguna razón, la existencia de un muestreo dinámico puede evitar que el optimizador genere planes desastrosos debido a la falta de información estadística. Sin embargo, el muestreo dinámico se bloquea sincrónicamente durante la fase de optimización de la consulta, por lo que inevitablemente aumentará el tiempo total dedicado a la optimización de la consulta y también aumentará la carga de todo el sistema de base de datos, por lo que limitamos estrictamente el uso del muestreo dinámico.

 

03. Diseño e implementación

A continuación, utilizaremos un ejemplo para expandir el diseño y la implementación del marco de búsqueda, el marco de aplicación de la propiedad y la estimación de costos.

 

Declaración de consulta

Esta versión simplificada de TPCH q3 es una combinación típica de tres tablas. La tabla de clientes se divide de acuerdo con c_custkey, la tabla de pedidos se divide de acuerdo con o_orderkey y la tabla de elementos de línea se divide de acuerdo con l_orderkey.

 
 

SELECCIONE l_orderkey, o_orderdate, o_shippriority FROM customer, orders, lineitem WHERE c_custkey = o_custkey AND l_orderkey = o_orderkey

 

Optimización de consultas

Antes de ingresar a la CBO, el plan de ejecución original se muestra en la siguiente figura: la tabla de clientes y la tabla de órdenes se unen primero, los resultados de Join se unen a la tabla de elementos de línea Join, y luego se muestran los resultados.

 

 

Después de ingresar la CBO, primero debe convertir el plan de consulta a Group y GroupExpression, e inicializar el espacio de búsqueda de Memo. Puede ver que hay 6 grupos en total, y cada grupo tiene una expresión de grupo. Group y GroupExpression son conceptos importantes en el espacio de búsqueda. Para una introducción detallada, consulte: Marco de búsqueda de AnalyticDB Cost based Optimizer, que no se ampliará aquí.

En pocas palabras: para el equivalente lógico, el conjunto de Expresión lógica y Expresión física que puede producir el mismo resultado se llama Grupo, y GroupExpression incluye Logical GroupExpression y Physical GroupExpression, y cada GroupExpression representa un plan candidato equivalente.

 

Aquí, para simplificar la descripción, solo consideramos el orden de unión, y en el caso de la unión distribuida, los dos requisitos de atributos de unión de división y unión de replicación. Para el algoritmo de unión, solo se considera la implementación física de unión de hash de forma predeterminada.

Otros operadores: TableScan y Output también tienen solo una implementación física de forma predeterminada. El programador programa tareas de búsqueda, ejecuta el proceso de búsqueda y expande el espacio de búsqueda. Se puede ver que a medida que el algoritmo de búsqueda continúa iterando, se agregarán Group y GroupExpression en Memo: el blanco indica GroupExpression lógico, el gris indica GroupExpression físico.

Se puede ver que después de aplicar la ley de combinación de Join, se han generado dos nuevos grupos, Group7 y Group8; después de aplicar la ley de intercambio de Join, se han agregado muchas expresiones de grupo lógico equivalentes a Group5 y Group3; Group7 y Group8 también tiene la expresión de grupo lógico equivalente.

 

 

Finalmente, considere dos tipos de implementación de Uniones distribuidas: Unir de Repartición y Unir de Replicar, para que se genere un espacio de búsqueda completo.

 

 

Cuando todo el espacio de búsqueda se expande por completo, se debe invocar a continuación el marco de Aplicación de la Propiedad. Para cada plan de ejecución física, se eliminan los atributos necesarios de Enforce para cumplir con los requisitos del plan de ejecución distribuido, y luego se llama al módulo de estimación de costos. Calcule el costo de cada plan distribuido y marque el plan con el costo más bajo como la solución óptima, que es Winner. Después de calcular los ganadores de cada grupo, conectar a cada ganador en serie es el plan de ejecución distribuido óptimo.

Para obtener detalles sobre la aplicación de la propiedad y la estimación de costos, puede consultar los siguientes tres artículos, que no se ampliarán aquí.

AnalyticDB Optimizador basado en costos Plan paralelo distribuido AnalyticDB Optimizador basado en costos Estimación de costos AnalyticDB Optimizador basado en costos Colección de estadísticas

El negro en la figura a continuación significa Ganador, lo que significa que el plan de ejecución física con el costo más bajo y el costo más bajo se cumple cuando se cumplen ciertos requisitos de atributos.

 

 

Atravesamos al ganador de cada grupo y conectamos al ganador en serie para formar el plan de ejecución distribuido óptimo.

Después de que cada Ganador pase por la Aplicación de la Propiedad, insertará los nodos de Intercambio necesarios cuando sea necesario para cumplir con los requisitos de atributos del plan distribuido, por lo que el plan de ejecución distribuido generado se muestra en la siguiente figura. Como puede ver: Primero, la tabla de clientes realiza una transmisión de la tabla completa a todos los nodos, y luego cumple con los requisitos de la tabla de pedidos Unir. Los resultados después de Unir se distribuyen de acuerdo con la tabla de pedidos. No es necesario insertar un nodo de Exchange, y eventualmente los resultados de Join se envían al nodo Output, por lo que el nodo Gather se inserta y agrega en un solo nodo.

 

 

 

04. Referencia

Una descripción general de la optimización de consultas en sistemas relacionales

El marco de Cascades para la eficiencia de optimización de consultas en el optimizador de consultas de la base de datos de Columbia

Orca: una arquitectura optimizadora de consultas modulares para Big Data

Incorporación de particiones y planes paralelos en el optimizador SCOPE

Perfiles de datos relacionales: una encuesta

Para la nube, consulte Yunqi: más información sobre la nube, casos de la nube, mejores prácticas, introducción del producto, visite: https://yqh.aliyun.com/

Este artículo es contenido original de Alibaba Cloud y no puede reproducirse sin permiso.

1217 artículos originales publicados · 90 elogios · 230,000 vistas +

Supongo que te gusta

Origin blog.csdn.net/weixin_43970890/article/details/105293717
Recomendado
Clasificación