DBCC PDW_SHOWEXECUTIONPLAN (Transact-SQL)
Gilt für: Azure Synapse Analytics Analytics Platform System (PDW)
Zeigt den SQL Server-Ausführungsplan für eine Abfrage an, die auf einem bestimmten Azure Synapse Analytics- oder Analytics-Plattformsystem (PDW)-Computeknoten oder -Steuerknoten ausgeführt wird. Verwenden Sie diese Funktion zum Behandeln von Problemen mit der Abfrageleistung, während Abfragen auf Compute- oder Steuerknoten ausgeführt werden.
Sobald Sie verstanden haben, wodurch Leistungsprobleme bei Abfragen für SMP-SQL Server-Abfragen auf den Computeknoten entstehen, können Sie diese Probleme auf verschiedene Weisen verbessern. Beispielsweise können Sie die Abfrageleistung auf Computeknoten verbessern, indem Sie Statistiken mit mehreren Spalten oder nicht gruppierte Indizes erstellen bzw. Abfragehinweise verwenden.
Transact-SQL-Syntaxkonventionen
Syntax
Syntax für Azure Synapse Analytics:
DBCC PDW_SHOWEXECUTIONPLAN ( distribution_id , spid )
[;]
Syntax für Analytics-Plattformsystem (PDW):
DBCC PDW_SHOWEXECUTIONPLAN ( pdw_node_id , spid )
[;]
Hinweis
Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.
Argumente
distribution_id
Bezeichner für die Verteilung, die den Abfrageplan ausführt. Dabei handelt es sich um einen Integer, der nicht NULL
sein kann. Der Wert muss zwischen 1 und 60 liegen. Dieser Bezeichner wird verwendet, wenn für Azure Synapse Analytics entwickelt wird.
pdw_node_id
Bezeichner für den Knoten, der den Abfrageplan ausführt. Dabei handelt es sich um einen Integer, der nicht NULL
sein kann. Wird verwendet, wenn eine Anwendung entwickelt wird.
spid
Bezeichner für die SQL Server-Sitzung, die den Abfrageplan ausführt. Dabei handelt es sich um einen Integer, der nicht NULL
sein kann.
Berechtigungen
Erfordert die CONTROL-Berechtigung auf Azure Synapse Analytics.
Erfordert die VIEW-SERVER-STATE-Berechtigung auf die Anwendung.
Beispiele: Azure Synapse Analytics
A. Grundlegende DBCC-PDW_SHOWEXECUTIONPLAN-Syntax
Die folgende Beispielabfrage gibt die sql_spid
für jede aktiv ausgeführte Verteilung zurück.
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];
Wenn Sie gerne wissen möchten, was distribution_id
1 in Sitzung 375 ausgeführt hat, können Sie den folgenden Befehl ausführen:
DBCC PDW_SHOWEXECUTIONPLAN (1, 375);
Beispiele: Analytics-Plattformsystem (PDW)
B. Grundlegende DBCC-PDW_SHOWEXECUTIONPLAN-Syntax
Die Abfrage, die zu lange ausgeführt wird, führt entweder einen Vorgang für einen DMS-Abfrageplan oder für einen SQL-Abfrageplan aus.
Wenn die Abfrage einen Vorgang für einen DMS-Abfrageplan ausführt. können Sie die folgende Abfrage verwenden, um eine Liste der Knoten- und Sitzungs-IDs für noch nicht abgeschlossene Schritte abzufragen.
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];
Verwenden Sie basierend auf den Ergebnissen der vorangehenden Abfrage die sql_spid
und pdw_node_id
als Parameter für DBCC PDW_SHOWEXECUTIONPLAN
. Beispielsweise zeigt das folgende Beispiel den Ausführungsplan für pdw_node_id
201001 und sql_spid
375.
DBCC PDW_SHOWEXECUTIONPLAN (201001, 375);