Plan de consulta en Amazon Redshift - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Plan de consulta en Amazon Redshift

Un plan de consulta es una lista de instrucciones que el motor de ejecución debe seguir para ejecutar una consulta sobre los datos. Puede crear un plan de consulta ejecutando el comando EXPLAIN seguido del texto real de la consulta, como se muestra en el siguiente ejemplo de consulta:

EXPLAIN select s.s_name, sum(li.l_quantity) as quantity from tpch.lineitem li join tpch.orders o on o.o_orderkey = li.l_orderkey and o.o_orderdate > '1992-05-01' join tpch.supplier s on s.s_suppkey = li.l_suppkey group by s.s_name order by quantity desc limit 10;

Si ejecuta el comando EXPLAIN del ejemplo de consulta anterior, obtendrá el resultado siguiente:

XN Limit (cost=1004400430902.15..1004400430902.17 rows=10 width=39) -> XN Merge (cost=1004400430902.15..1004400430926.97 rows=9928 width=39) Merge Key: sum(li.l_quantity) -> XN Network (cost=1004400430902.15..1004400430926.97 rows=9928 width=39) Send to leader -> XN Sort (cost=1004400430902.15..1004400430926.97 rows=9928 width=39) Sort Key: sum(li.l_quantity) -> XN HashAggregate (cost=4400430218.24..4400430243.06 rows=9928 width=39) -> XN Hash Join DS_BCAST_INNER (cost=21489.58..4400401726.35 rows=5698378 width=39) Hash Cond: ("outer".l_suppkey = "inner".s_suppkey) -> XN Hash Join DS_DIST_NONE (cost=21364.58..273387.85 rows=5698378 width=14) Hash Cond: ("outer".l_orderkey = "inner".o_orderkey) -> XN Seq Scan on lineitem li (cost=0.00..60012.15 rows=6001215 width=22) -> XN Hash (cost=17803.81..17803.81 rows=1424306 width=8) -> XN Seq Scan on orders o (cost=0.00..17803.81 rows=1424306 width=8) Filter: (o_orderdate > '1992-05-01'::date) -> XN Hash (cost=100.00..100.00 rows=10000 width=33) -> XN Seq Scan on supplier s (cost=0.00..100.00 rows=10000 width=33)
nota

La salida del plan de consulta de ejemplo es una vista general simplificada de la ejecución de consultas. El plan de ejemplo no muestra los detalles del procesamiento en paralelo de las consultas. Para ver información detallada, ejecute la consulta y, a continuación, use las vistas SVL_QUERY_SUMMARY o SVL_QUERY_REPORT para obtener información sobre el resumen de la consulta.

Editor de consultas V2 de Amazon Redshift

También puede ver los planes de consultas en Amazon Redshift mediante la opción Explain del editor de consultas v2. Para obtener instrucciones, consulte Uso del editor de consultas v2 en la documentación de Amazon Redshift.

El plan de consulta que genera el editor de consultas v2 incluye la siguiente información:

  • Las operaciones que realizará el motor de ejecución, leyendo los resultados de abajo arriba.

  • El tipo de paso que realiza cada operación.

  • Las tablas y las columnas que se utilizan en cada operación.

  • La cantidad de datos que se procesa en cada operación, en cuanto a la cantidad de filas y al ancho de datos en bytes.

  • El costo relativo de la operación. (El costo es una medida que compara los tiempos de ejecución relativos de los pasos de un plan. El costo no proporciona información precisa sobre los tiempos de ejecución reales o el consumo de memoria, ni proporciona una comparación significativa entre los planes de ejecución. Sin embargo, el costo proporciona una indicación de las operaciones de una consulta que consumen más recursos).

Planes EXPLAIN

Puede utilizar la tabla del sistema STL_EXPLAIN para mostrar el plan EXPLAIN de una consulta que se ha enviado para su ejecución. En general, el uso de STL_EXPLAIN puede ayudar a mejorar el rendimiento, la eficiencia y la rentabilidad de sus consultas de Amazon Redshift.

Las ventajas de usar STL_EXPLAIN son las siguientes:

  • Optimización del rendimiento: STL_EXPLAIN puede ayudar a identificar las áreas de una consulta que se pueden optimizar para mejorar el rendimiento.

  • Planificación de consultas: STL_EXPLAIN puede proporcionar información sobre cómo Amazon Redshift ejecuta la consulta y puede ayudar a identificar posibles cuellos de botella en la consulta.

  • Depuración: STL_EXPLAIN puede ayudar a diagnosticar los problemas relacionados con una consulta al mostrar los pasos que Amazon Redshift sigue para ejecutar esa consulta.

  • Información sobre el comportamiento de Amazon Redshift: STL_EXPLAIN puede aportar información sobre cómo Amazon Redshift procesa las consultas. Esto puede ayudarlo a comprender mejor el comportamiento de Amazon Redshift.

  • Optimización de costos: STL_EXPLAIN puede proporcionar información sobre el costo estimado de una consulta. Esto puede ayudar a identificar las áreas en las que puede optimizar los costos.

La siguiente consulta es un ejemplo que devuelve los nodos del plan para una consulta determinada:

select nodeid as id, plannode, info from stl_explain where query=1042904 order by nodeid;

La consulta anterior devuelve la siguiente salida.

Salida de una consulta que devuelve los nodos del plan de consulta.

El plan EXPLAIN devuelve métricas útiles para cada operación, incluidas las métricas de costo, filas y ancho. Por ejemplo, la línea 7 de la consulta anterior devuelve lo siguiente:

-> XN Hash Join DS_DIST_NONE (cost=21364.58..273387.85 rows=5698378 width=14)

Coste

El costo es un valor relativo que es útil para comparar operaciones dentro de un plan. El costo se compone de dos valores decimales separados por dos puntos. En este ejemplo, el costo es igual a 21364.58..273387.85. Considere lo siguiente:

  • El primer valor (en este caso, 21364.58) proporciona el costo relativo del retorno de la primera fila de esta operación.

  • El segundo valor (en este caso, 273387.85) proporciona el costo relativo de completar la operación. 

Los costos del plan de consulta son acumulativos y se acumulan de las filas inferiores a las filas superiores. En la salida del ejemplo anterior, la fila 7 incluye el costo de las demás operaciones de las filas situadas debajo (es decir, de las filas 8 a 12 y posteriores).

Filas

Las filas indican la cantidad estimada de filas que se devuelven. En este ejemplo, se espera que el examen devuelva 5 698 378 filas. El cálculo de filas se basa en las estadísticas disponibles que genera el comando ANALYZE. Si ANALYZE no se ejecutó recientemente, el cálculo será menos fiable.

Ancho

El ancho indica el ancho estimado de la fila promedio, medido en bytes. En este ejemplo, se espera que la fila promedio sea de 14 bytes de ancho.