SVCS_EXPLAIN - Amazon Redshift

SVCS_EXPLAIN

Muestra el plan EXPLAIN de una consulta que se ha enviado para ejecutarse.

nota

Las vistas del sistema con el prefijo SVCS proporcionan información sobre las consultas de los clústeres principal y de escalado de simultaneidad. Las vistas son similares a las tablas con el prefijo STL, con la salvedad de que las tablas STL solo proporcionan información para las consultas ejecutadas en el clúster principal.

SVCS_EXPLAIN es visible para todos los usuarios. Los superusuarios pueden ver todas las filas; los usuarios normales solo pueden ver sus datos. Para obtener más información, consulte Visibilidad de datos en las tablas y vistas de sistema.

Columnas de la tabla

Nombre de la columna Tipo de datos Descripción
userid integer ID del usuario que generó la entrada.
consulta integer ID de la consulta. La columna de consulta puede usarse para combinar otras vistas y tablas del sistema.
nodeid integer Identificador del nodo del plan, donde se asigna un nodo a uno o más pasos en la ejecución de la consulta.
parentid integer Identificador del nodo del plan para un nodo principal. Un nodo principal tiene algunos nodos secundarios. Por ejemplo, una combinación de fusión es el nodo principal de los exámenes de las tablas combinadas.
plannode character (400) El texto del nodo extraído de la salida de EXPLAIN. Los nodos del plan que hacen referencia a la ejecución en nodos de computación llevan el prefijo XN en la salida de EXPLAIN.
info character(400) Información del calificador y del filtro para el nodo del plan. Por ejemplo, las condiciones de combinación y las restricciones de la cláusula WHERE están incluidas en esta columna.

Consultas de ejemplo

Analice la siguiente salida de EXPLAIN para una consulta de combinación de agregación:

explain select avg(datediff(day, listtime, saletime)) as avgwait from sales, listing where sales.listid = listing.listid; QUERY PLAN ------------------------------------------------------------------------------ XN Aggregate (cost=6350.30..6350.31 rows=1 width=16) -> XN Hash Join DS_DIST_NONE (cost=47.08..6340.89 rows=3766 width=16) Hash Cond: ("outer".listid = "inner".listid) -> XN Seq Scan on listing (cost=0.00..1924.97 rows=192497 width=12) -> XN Hash (cost=37.66..37.66 rows=3766 width=12) -> XN Seq Scan on sales (cost=0.00..37.66 rows=3766 width=12) (6 rows)

Si ejecuta esta consulta y su ID de consulta es 10, puede utilizar la tabla SVCS_EXPLAIN para ver el mismo tipo de información que devuelve el comando EXPLAIN:

select query,nodeid,parentid,substring(plannode from 1 for 30), substring(info from 1 for 20) from svcs_explain where query=10 order by 1,2; query| nodeid |parentid| substring | substring -----+--------+--------+--------------------------------+------------------- 10 | 1 | 0 |XN Aggregate (cost=6717.61..6 | 10 | 2 | 1 | -> XN Merge Join DS_DIST_NO| Merge Cond:("outer" 10 | 3 | 2 | -> XN Seq Scan on lis | 10 | 4 | 2 | -> XN Seq Scan on sal | (4 rows)

Analice la siguiente consulta:

select event.eventid, sum(pricepaid) from event, sales where event.eventid=sales.eventid group by event.eventid order by 2 desc; eventid | sum --------+---------- 289 | 51846.00 7895 | 51049.00 1602 | 50301.00 851 | 49956.00 7315 | 49823.00 ...

Si el ID de esta consulta es 15, la siguiente consulta a la tabla de sistema devolverá los nodos del plan que se realizaron. En este caso, el orden de los nodos está invertido para mostrar el orden rea de la ejecución:

select query,nodeid,parentid,substring(plannode from 1 for 56) from svcs_explain where query=15 order by 1, 2 desc; query|nodeid|parentid| substring -----+------+--------+-------------------------------------------------------- 15 | 8 | 7 | -> XN Seq Scan on eve 15 | 7 | 5 | -> XN Hash(cost=87.98..87.9 15 | 6 | 5 | -> XN Seq Scan on sales(cos 15 | 5 | 4 | -> XN Hash Join DS_DIST_OUTER(cos 15 | 4 | 3 | -> XN HashAggregate(cost=862286577.07.. 15 | 3 | 2 | -> XN Sort(cost=1000862287175.47..10008622871 15 | 2 | 1 | -> XN Network(cost=1000862287175.47..1000862287197. 15 | 1 | 0 |XN Merge(cost=1000862287175.47..1000862287197.46 rows=87 (8 rows)

La siguiente consulta recupera los ID de consultas de todos los planes de consulta que tienen una función de ventana:

select query, trim(plannode) from svcs_explain where plannode like '%Window%'; query| btrim -----+------------------------------------------------------------------------ 26 | -> XN Window(cost=1000985348268.57..1000985351256.98 rows=170 width=33) 27 | -> XN Window(cost=1000985348268.57..1000985351256.98 rows=170 width=33) (2 rows)