Dela via


DBCC PDW_SHOWEXECUTIONPLAN (Transact-SQL)

gäller för:Azure Synapse AnalyticsAnalytics Platform System (PDW)

Visar SQL Server-körningsplanen för en fråga som körs på en specifik Beräkningsnod för Azure Synapse Analytics eller Analysplattformssystem (PDW) eller kontrollnod. Använd det här alternativet för att felsöka problem med frågeprestanda när frågor körs på beräkningsnoderna och kontrollnoden.

När problem med frågeprestanda förstås för SMP SQL Server-frågor som körs på beräkningsnoderna finns det flera sätt att förbättra prestanda. Möjliga sätt att förbättra frågeprestanda på beräkningsnoderna är att skapa statistik med flera kolumner, skapa icke-illustrerade index eller använda frågetips.

Transact-SQL syntaxkonventioner

Syntax

Syntax för Azure Synapse Analytics:

DBCC PDW_SHOWEXECUTIONPLAN ( distribution_id , spid )
[;]

Syntax för Analysplattformssystem (PDW):

DBCC PDW_SHOWEXECUTIONPLAN ( pdw_node_id , spid )
[;]

Not

Den här syntaxen stöds inte av en serverlös SQL-pool i Azure Synapse Analytics.

Argument

distribution_id

Identifierare för den distribution som kör frågeplanen. Det här är ett heltal och kan inte NULL. Värdet måste vara mellan 1 och 60. Används när du riktar in dig på Azure Synapse Analytics.

pdw_node_id

Identifierare för den nod som kör frågeplanen. Det här är ett heltal och kan inte NULL. Används när du riktar in dig på en installation.

spid

Identifierare för SQL Server-sessionen som kör frågeplanen. Det här är ett heltal och kan inte NULL.

Behörigheter

Kräver KONTROLL-behörighet för Azure Synapse Analytics.

Kräver VISA SERVERTILLSTÅND behörighet för installationen.

Exempel: Azure Synapse Analytics

A. Grundläggande syntax för DBCC PDW_SHOWEXECUTIONPLAN

Följande exempelfråga returnerar sql_spid för varje aktivt löpande distribution.

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

Om du är nyfiken på vad distribution_id 1 körde i session 375 skulle du köra följande kommando:

DBCC PDW_SHOWEXECUTIONPLAN (1, 375);

Exempel: Analysplattformssystem (PDW)

B. Grundläggande syntax för DBCC PDW_SHOWEXECUTIONPLAN

Frågan som körs för länge kör antingen en DMS-frågeplansåtgärd eller en SQL-frågeplansåtgärd.

Om frågan kör en DMS-frågeplansåtgärd kan du använda följande fråga för att hämta en lista över nod-ID:t och sessions-ID:t för steg som inte är slutförda.

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

Baserat på resultatet av föregående fråga använder du sql_spid och pdw_node_id som parametrar för att DBCC PDW_SHOWEXECUTIONPLAN. Följande kommando visar till exempel körningsplanen för pdw_node_id 201001 och sql_spid 375.

DBCC PDW_SHOWEXECUTIONPLAN (201001, 375);

Nästa steg