DBCC PDW_SHOWEXECUTIONPLAN (Transact-SQL)

Si applica a:Azure Synapse Analytics AnalyticsPlatform System (PDW)

Visualizza il piano di esecuzione di SQL Server per una query in esecuzione in uno specifico nodo di calcolo o nodo di controllo di Azure Synapse Analytics o della Piattaforma di strumenti analitici (PDW). Consente di risolvere i problemi relativi alle prestazioni di query quando le query vengono eseguite sui nodi di calcolo e di controllo.

Dopo il rilevamento di problemi di prestazioni delle query per le query SQL Server SMP in esecuzione nei nodi di calcolo, esistono diversi modi per migliorare le prestazioni. Le possibili soluzioni per migliorare le prestazioni delle query sui nodi di calcolo includono la creazione di statistiche multicolonna, la creazione di indici non cluster o l'uso di hint per la query.

Convenzioni di sintassi Transact-SQL

Sintassi

Sintassi per Azure Synapse Analytics:

DBCC PDW_SHOWEXECUTIONPLAN ( distribution_id , spid )
[;]

Sintassi per la piattaforma di strumenti analitici (PDW):

DBCC PDW_SHOWEXECUTIONPLAN ( pdw_node_id , spid )
[;]

Nota

Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.

Argomenti

distribution_id

Identificatore per la distribuzione in cui è in esecuzione il piano di query. Si tratta di un intero e non può essere NULL. Il valore deve essere compreso tra 1 e 60. Usato quando la destinazione è Azure Synapse Analytics.

pdw_node_id

Identificatore per il nodo in cui è in esecuzione il piano di query. Si tratta di un intero e non può essere NULL. Usato quando la destinazione è un'appliance.

spid

Identificatore per la sessione di SQL Server in cui è in esecuzione il piano di query. Si tratta di un intero e non può essere NULL.

Autorizzazioni

È richiesta l'autorizzazione CONTROL per Azure Synapse Analytics.

Richiede l'autorizzazione VIEW SERVER STATE per l'appliance.

Esempi: Azure Synapse Analytics

A. Sintassi di base PDW_SHOWEXECUTIONPLAN DBCC

La query di esempio seguente restituirà il valore sql_spid per ogni distribuzione in esecuzione attiva.

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 si vuole sapere quale distribution_id 1 era in esecuzione nella sessione 375, eseguire il comando seguente:

DBCC PDW_SHOWEXECUTIONPLAN (1, 375);

Esempi: Piattaforma di strumenti analitici (PDW)

B. Sintassi di base PDW_SHOWEXECUTIONPLAN DBCC

La query che è in esecuzione da troppo tempo sta eseguendo un'operazione del piano di query DMS o un'operazione del piano di query SQL.

Se la query esegue un'operazione del piano di query DMS, è possibile usare la query seguente per recuperare un elenco degli ID nodo e degli ID sessione per i passaggi che non sono stati completati.

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

In base ai risultati della query precedente, usare sql_spid e pdw_node_id come parametri per DBCC PDW_SHOWEXECUTIONPLAN. Il comando seguente illustra ad esempio il piano di esecuzione per pdw_node_id 201001 e sql_spid 375.

DBCC PDW_SHOWEXECUTIONPLAN (201001, 375);

Passaggi successivi