DBCC PDW_SHOWEXECUTIONPLAN (Transact-SQL)
Se aplica a: Azure Synapse Analytics Analytics Platform System (PDW)
Muestra el plan de ejecución de SQL Server para una consulta que se ejecuta en un nodo de ejecución o un nodo de control determinado de Azure Synapse Analytics o Sistema de la plataforma de análisis (PDW). Úselo para solucionar problemas de rendimiento de consultas mientras se ejecutan las consultas en los nodos de ejecución y de control.
Una vez que se conozcan los problemas de rendimiento de las consultas de SQL Server de SMP que se ejecutan en los nodos de ejecución, hay varias maneras de mejorar el rendimiento. Entre las diversas formas de mejorar el rendimiento de las consultas de los nodos de ejecución se incluye crear estadísticas de varias columnas, crear índices no agrupados o usar sugerencias de consulta.
Convenciones de sintaxis de Transact-SQL
Sintaxis
Sintaxis para Azure Synapse Analytics:
DBCC PDW_SHOWEXECUTIONPLAN ( distribution_id , spid )
[;]
Sintaxis para Sistema de la plataforma de análisis (PDW):
DBCC PDW_SHOWEXECUTIONPLAN ( pdw_node_id , spid )
[;]
Nota:
El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.
Argumentos
distribution_id
Identificador de la distribución que ejecuta el plan de consulta. Es un entero y no puede ser NULL
. El valor debe estar entre 1 y 60. Se usa cuando el destino es Azure Synapse Analytics.
pdw_node_id
Identificador del nodo que ejecuta el plan de consulta. Es un entero y no puede ser NULL
. Se usa cuando el destino es un dispositivo.
spid
Identificador de la sesión de SQL Server que ejecuta el plan de consulta. Es un entero y no puede ser NULL
.
Permisos
Necesita el permiso CONTROL en Azure Synapse Analytics.
Requiere el permiso VIEW SERVER STATE en el dispositivo.
Ejemplos: Azure Synapse Analytics
A. Sintaxis básica de DBCC PDW_SHOWEXECUTIONPLAN
La siguiente consulta de ejemplo devolverá sql_spid
para cada distribución en ejecución activa.
SELECT [sql_spid]
, [pdw_node_id]
, [request_id]
, [dms_step_index]
, [type]
, [start_time]
, [end_time]
, [status]
, [distribution_id]
FROM sys.dm_pdw_dms_workers
WHERE [status] <> 'StepComplete'
AND [status] <> 'StepError'
ORDER BY request_id
, [dms_step_index];
Si le interesa saber cuál es la distribution_id
1 que se ejecutaba en la sesión 375, debe ejecutar el comando siguiente:
DBCC PDW_SHOWEXECUTIONPLAN (1, 375);
Ejemplos: Sistema de la plataforma de análisis (PDW)
B. Sintaxis básica de DBCC PDW_SHOWEXECUTIONPLAN
Cuando una consulta se ejecuta durante mucho tiempo, significa que está ejecutando una operación de plan de consulta DMS o una operación de plan de consulta SQL.
Si la consulta está ejecutando una operación de plan de consulta DMS, puede usar la consulta siguiente para recuperar una lista de los identificadores de nodo y de sesión para conocer los pasos que no se han completado.
SELECT [sql_spid]
, [pdw_node_id]
, [request_id]
, [dms_step_index]
, [type]
, [start_time]
, [end_time]
, [status]
FROM sys.dm_pdw_dms_workers
WHERE [status] <> 'StepComplete'
AND [status] <> 'StepError'
AND pdw_node_id = 201001
ORDER BY request_id
, [dms_step_index]
, [distribution_id];
Según los resultados de la consulta anterior, use sql_spid
y pdw_node_id
como parámetros para DBCC PDW_SHOWEXECUTIONPLAN
. Por ejemplo, en el comando siguiente se muestra el plan de ejecución para pdw_node_id
201001 y sql_spid
375.
DBCC PDW_SHOWEXECUTIONPLAN (201001, 375);