Revisión de los pasos del plan de consulta - Amazon Redshift

Revisión de los pasos del plan de consulta

Para ver los pasos de un plan de consulta, ejecute el comando EXPLAIN. En el siguiente ejemplo, se muestra una consulta SQL y se explica el resultado. Si lee el plan de consulta desde abajo hacia arriba, puede ver cada una de las operaciones lógicas que se utilizan para realizar la consulta. Para obtener más información, consulte Plan de consulta.

explain select eventname, sum(pricepaid) from sales, event where sales.eventid = event.eventid group by eventname order by 2 desc;
XN Merge (cost=1002815366604.92..1002815366606.36 rows=576 width=27) Merge Key: sum(sales.pricepaid) -> XN Network (cost=1002815366604.92..1002815366606.36 rows=576 width=27) Send to leader -> XN Sort (cost=1002815366604.92..1002815366606.36 rows=576 width=27) Sort Key: sum(sales.pricepaid) -> XN HashAggregate (cost=2815366577.07..2815366578.51 rows=576 width=27) -> XN Hash Join DS_BCAST_INNER (cost=109.98..2815365714.80 rows=172456 width=27) Hash Cond: ("outer".eventid = "inner".eventid) -> XN Seq Scan on sales (cost=0.00..1724.56 rows=172456 width=14) -> XN Hash (cost=87.98..87.98 rows=8798 width=21) -> XN Seq Scan on event (cost=0.00..87.98 rows=8798 width=21)

Como parte de la generación de un plan de consulta, el optimizador de consultas desglosa el plan en flujos, segmentos y pasos. El optimizador de consultas desglosa el plan para prepararse para distribuir los datos y la carga de trabajo de consulta a los nodos informáticos. Para obtener más información acerca de los flujos, segmentos y pasos, consulte Flujo de trabajo de planificación y ejecución de consultas.

En la siguiente ilustración se muestra la consulta anterior y el plan de consulta asociado. Muestra cómo las operaciones de consulta involucradas se asignan a los pasos que Amazon Redshift utiliza para generar código compilado para los sectores de nodos informáticos. Cada operación del plan de consulta se asigna a distintos pasos dentro de los segmentos y, a menudo, a distintos segmentos dentro de las secuencias.

En esta ilustración, el optimizador de consultas ejecuta el plan de consultas de la siguiente manera:

  1. En Stream 0, la consulta ejecuta Segment 0 con una operación de análisis secuencial para analizar la tabla events. La consulta continúa Segment 1 con una operación hash para crear la tabla hash para la tabla interna de la combinación.

  2. En Stream 1, la consulta ejecuta Segment 2 con una operación de análisis secuencial para analizar la tabla sales. Continúa Segment 2 con una combinación hash para unir tablas donde las columnas de unión no son claves de distribución y claves de ordenación a la vez. De nuevo continúa con Segment 2 con un hash de agregación para agregar resultados. A continuación, la consulta ejecuta Segment 3 con una operación de agregado hash para realizar funciones de agregación agrupadas no ordenadas y una operación de ordenación para evaluar la cláusula ORDER BY y otras operaciones de ordenación.

  3. En Stream 2, la consulta ejecuta una operación de red en Segment 4 y Segment 5 para enviar resultados intermedios al nodo de directriz para su posterior procesamiento.

El último segmento de una consulta devuelve los datos. Si el conjunto de devoluciones se agrega u ordena, los nodos de cálculo envían cada uno su parte del resultado intermedio al nodo de directriz. A continuación, el nodo líder combina los datos para que el resultado final se pueda enviar de nuevo al cliente solicitante.

Para obtener más información acerca de los operadores EXPLAIN, consulte EXPLAIN.