Compartilhar via


DBCC PDW_SHOWEXECUTIONPLAN (Transact-SQL)

Aplica-se a: Azure Synapse Analytics Analytics Platform System (PDW)

Exibe o plano de execução do SQL Server de uma consulta em execução em um nó de computação ou em um nó de controle específico do Azure Synapse Analytics ou do PDW (Analytics Platform System). Use isso para solucionar problemas de desempenho de consulta enquanto as consultas estiverem sendo executadas em nós de computação e no nó de controle.

Depois que forem esclarecidos os problemas de desempenho das consultas de SMP do SQL Server em execução nos nós de computação, haverá várias maneiras de melhorar o desempenho. Algumas possíveis maneiras de melhorar o desempenho da consulta nos nós de computação incluem a criação de estatísticas de várias colunas, a criação de índices não clusterizados ou o uso de dicas de consulta.

Convenções de sintaxe Transact-SQL

Sintaxe

Sintaxe para Azure Synapse Analytics:

DBCC PDW_SHOWEXECUTIONPLAN ( distribution_id , spid )
[;]

Sintaxe para PDW (Analytics Platform System):

DBCC PDW_SHOWEXECUTIONPLAN ( pdw_node_id , spid )
[;]

Observação

Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.

Argumentos

distribution_id

Identificador da distribuição que está executando o plano de consulta. É um inteiro e não pode ser NULL. O valor deve estar entre 1 e 60. Usado ao direcionar ao Azure Synapse Analytics.

pdw_node_id

Identificador do nó que está executando o plano de consulta. É um inteiro e não pode ser NULL. Usado ao direcionar a um dispositivo.

spid

Identificador da sessão do SQL Server que está executando o plano de consulta. É um inteiro e não pode ser NULL.

Permissões

Requer a permissão CONTROL no Azure Synapse Analytics.

Requer a permissão VIEW SERVER STATE no dispositivo.

Exemplos: Azure Synapse Analytics

a. Sintaxe básica de DBCC PDW_SHOWEXECUTIONPLAN

A consulta de exemplo a seguir retornará sql_spid para cada distribuição em execução ativamente.

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];

Se você ficou curioso para saber o que distribution_id 1 estava executando na sessão 375, execute o seguinte comando:

DBCC PDW_SHOWEXECUTIONPLAN (1, 375);

Exemplos: PDW (Analytics Platform System)

B. Sintaxe básica de DBCC PDW_SHOWEXECUTIONPLAN

A consulta que está em uma execução muito longa está executando uma operação de plano de consulta do DMS ou uma operação de plano de consulta do SQL.

Se a consulta executar uma operação de plano de consulta do DMS, use a consulta a seguir para recuperar uma lista de IDs de nó e de IDs de sessão para as etapas que ainda não foram concluídas.

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];

Com base nos resultados da consulta anterior, use sql_spid e pdw_node_id como parâmetros para DBCC PDW_SHOWEXECUTIONPLAN. Por exemplo, o comando a seguir mostra o plano de execução para pdw_node_id 201001 e sql_spid 375.

DBCC PDW_SHOWEXECUTIONPLAN (201001, 375);

Próximas etapas