Descripción general del ejecutor de la base de datos de Yunxi

Como todos sabemos, antes de que se ejecute el ejecutor, necesita el apoyo del plan. Los planes se dividen en planes lógicos y planes físicos. Su relación es como si fuéramos a viajar, elegir un medio de transporte equivale a un plan lógico, después de este paso, como elegir un avión. Elegir qué aerolínea usar es el equivalente a un plan físico. Al final, cuando realmente te pones en marcha para viajar, es el equivalente a la ejecución. El diagrama de la estructura básica de la ejecución de sentencias SQL se proporciona a continuación, desde el cual puede ver claramente el proceso de ejecución del optimizador y el ejecutor en todo el proceso.

optimizador

Los planes lógicos y físicos son responsables de generar planes de ejecución y selección de índices, y pueden considerarse como optimizadores. Por ejemplo, para ejecutar una declaración como esta, realice una combinación de dos tablas:

Seleccione * de t1 únase a t2 usando (ID) donde t1.c = 10 y t2.d = 20;

Primero puede tomar la ID del registro c=10 de t1, luego asociarla con t2 de acuerdo con la ID y luego juzgar si el valor de d en t2 es igual a 20, o primero puede tomar la ID del registro c=20 de t2, y luego asociar de acuerdo con el ID. Vaya a t1, y luego juzgue si el valor de d en t2 es igual a 10. La lógica de estos dos métodos de ejecución es la misma, pero la eficiencia de ejecución es diferente. El optimizador puede estimar el costo y decidir el plan de uso. En una base de datos distribuida, el plan físico también puede determinar en qué nodo se ejecuta el operador según el nodo donde se encuentra el tramo de datos a utilizar, para realizar la ejecución distribuida. El papel específico de los planes físicos relacionados con la distribución se describe en la ejecución distribuida.

 

ejecución distribuida

La idea clave de la ejecución distribuida es cómo pasar del plan de ejecución lógica al plan de ejecución física, que involucra principalmente dos aspectos del procesamiento, uno es el procesamiento distribuido de la computación y el otro es el procesamiento distribuido de datos.

Una vez que se genera el plan físico, el sistema necesita dividirlo y distribuirlo entre los nodos para su funcionamiento. Cada nodo es responsable de la programación local de procesadores y entradas. Los nodos también deben poder comunicarse entre sí para conectar el enrutador de salida a la entrada. En particular, se requiere una interfaz de transmisión para conectar estos componentes. Para evitar costos adicionales de sincronización, se requiere un entorno de ejecución lo suficientemente flexible para satisfacer todas las operaciones anteriores, de modo que además de ejecutar la programación inicial del plan, los diferentes nodos puedan iniciar el trabajo de procesamiento de datos correspondiente de forma relativamente independiente sin verse afectados. por la puerta de enlace Otros efectos de orquestación del nodo.

El nodo Gateway en el clúster de la base de datos crea un planificador que acepta un conjunto de flujos, establece la información relacionada con la entrada y la salida, crea un procesador local e inicia la ejecución. Cuando el nodo procesa los datos de entrada y salida, necesitamos controlar el flujo, a través de este control, podemos rechazar algunas solicitudes en la solicitud.

Cada Flujo representa un segmento completo ejecutado a través de los nodos en todo el plan físico, que consta de procesadores y flujos, que pueden completar la extracción de datos, el procesamiento de cálculos de datos y la salida final de datos para el segmento. Como se muestra abajo:

Para la ejecución entre nodos, el nodo Gateway primero serializará el FlowSpec correspondiente como SetupFlowRequest y lo enviará al nodo remoto a través de GRPC. Después de que el nodo remoto lo reciba, primero restaurará el flujo y creará su procesador y secuencia interactiva ( canal TCP), se debe construir el marco de ejecución y luego el nodo de la puerta de enlace comienza a impulsar la computación de múltiples nodos. Los flujos se programan de forma asíncrona a través del grupo de búfer de caja para lograr la ejecución paralela de todo el marco distribuido.

Para la ejecución local, es decir, la ejecución en paralelo, cada procesador, sincronizador y enrutador pueden ejecutarse como una gorutina y están interconectados por canales. Estos canales pueden amortiguar canales para sincronizar productores y consumidores.

Para lograr una ejecución concurrente distribuida, la base de datos introduce el concepto de enrutador durante la ejecución.Para operadores complejos como JOIN y AGGREGATOR, se implementan tres métodos de redistribución de datos de acuerdo con las características de distribución de datos, mirror_router, hash_router y range_router, que son implementados por redistribución de datos. El operador del procesador se divide internamente en dos etapas de ejecución. La primera etapa es procesar parte de los datos en el nodo donde se encuentran los datos. Después del procesamiento, el resultado se redistribuirá de acuerdo con el tipo de operador, y el la segunda etapa será agregada y procesada, realizando así un solo operador Ejecución cooperativa de múltiples nodos.

{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/5148943/blog/5444755
Recomendado
Clasificación