Flujo de trabajo de planificación y ejecución de consultas - Amazon Redshift

Flujo de trabajo de planificación y ejecución de consultas

En el siguiente diagrama, se proporciona una vista general del flujo de trabajo de planificación y ejecución de consultas.

Query planning and execution workflow diagram showing front end, optimizer, and back end components.

El flujo de trabajo de planificación y ejecución de consultas consta de los siguientes pasos:

  1. El nodo principal recibe la consulta y analiza el SQL.

  2. El analizador genera un árbol de consultas inicial que es una representación lógica de la consulta original. A continuación, Amazon Redshift inserta este árbol de consultas en el optimizador de consultas.

  3. El optimizador evalúa y, de ser necesario, reescribe la consulta para maximizar su eficacia. Este proceso, a menudo, crea múltiples consultas relacionadas que reemplazan una misma consulta.

  4. El optimizador genera un plan de consulta (o varios, si el paso anterior generó consultas múltiples) para ejecutarlo con el mejor rendimiento posible. El plan de consulta especifica las opciones de ejecución, como los tipos de combinaciones, el orden de las combinaciones, las opciones de agregación y los requisitos de distribución de datos.

    Puede utilizar el comando EXPLAIN para ver el plan de consulta. El plan de consulta es una herramienta fundamental para analizar y ajustar consultas complejas. Para obtener más información, consulte Plan de consulta.

  5. El motor de ejecución traduce el plan de consulta en pasos, segmentos y secuencias:

    Paso

    Cada paso es una operación individual que es necesario hacer durante la ejecución de consultas. Los pasos se pueden combinar para permitir que los nodos de computación realicen una consulta, una combinación y cualquier otra operación en la base de datos.

    Segmento

    Es una combinación de distintos pasos que se pueden realizar por un mismo proceso, además de ser la unidad mínima de compilación que puede ejecutar un sector de un nodo de computación. Un sector es la unidad de procesamiento en paralelo de Amazon Redshift. Los segmentos de una secuencia se ejecutan en paralelo.

    De streaming

    Es un conjunto de segmentos que se reparten entre los sectores disponibles de un nodo de computación.

    El motor de ejecución genera un código compilado en función de los pasos, los segmentos y las secuencias. El código compilado se ejecuta más rápido que el código interpretado y utiliza menor capacidad informática. Luego, este código compilado se difunde a los nodos de computación.

    nota

    Al realizar análisis comparativos de sus consultas, siempre debe comparar los tiempos de la segunda ejecución de una consulta, porque el tiempo de la primera ejecución incluye el trabajo adicional de compilar el código. Para obtener más información, consulte Factores que afectan al rendimiento de las consultas.

  6. Los sectores del nodo informático ejecutan los segmentos de la consulta en paralelo. Como parte de este proceso, Amazon Redshift aprovecha la comunicación optimizada de red, la memoria y la administración de discos para transmitir los resultados intermedios de un paso del plan de consulta al siguiente. Esto también ayuda a agilizar la ejecución de consultas.

Los pasos 5 y 6 tienen lugar una sola vez en cada secuencia. El motor crea segmentos ejecutables para una secuencia y los envía a los nodos de computación. Cuando los segmentos de esa secuencia están completos, el motor genera los segmentos para la próxima secuencia. De esta manera, el motor puede analizar lo que ocurrió la secuencia anterior (por ejemplo, si las operaciones estaban basadas en el disco) para influir sobre la generación de segmentos en la próxima secuencia.

Cuando los nodos de computación están listos, devuelven los resultados de las consultas al nodo principal para el procesamiento final. El nodo principal fusiona los datos en un conjunto único de resultados y realiza las tareas de ordenación o agregación que sean necesarias. Luego, el nodo principal devuelve los resultados al cliente.

nota

Es probable que los nodos de computación devuelvan algunos datos al nodo principal durante la ejecución de consultas si fuera necesario. Por ejemplo, si tiene una subconsulta con una cláusula LIMIT, el límite se aplica al nodo principal antes de que se distribuyan los datos en todo el clúster para seguir trabajando con ellos.