Share via


DBCC PDW_SHOWEXECUTIONPLAN (Transact-SQL)

適用於:Azure Synapse AnalyticsAnalytics Platform System (PDW)

顯示在特定 Azure Synapse Analytics 或 Analytics Platform System (PDW) 計算節點或控制節點上執行的 SQL Server 執行計劃。 在計算節點或控制節點上執行查詢時,此命令可用來對查詢效能問題進行疑難排解。

了解在計算節點上執行之 SMP SQL Server 查詢的查詢效能問題後,有許多方法可予以改善。 可改善計算節點上查詢效能的可能方法,包括建立多重資料行統計資料、建立非叢集索引,或使用查詢提示。

Transact-SQL 語法慣例

Syntax

Azure Synapse Analytics 的語法:

DBCC PDW_SHOWEXECUTIONPLAN ( distribution_id , spid )
[;]

Analytics Platform System (PDW) 語法:

DBCC PDW_SHOWEXECUTIONPLAN ( pdw_node_id , spid )
[;]

注意

Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。

引數

distribution_id

執行查詢計劃之分佈的識別碼。 這是整數,不能是 NULL。 值必須介於 1 到 60 之間。 以 Azure Synapse Analytics 為目標時使用。

pdw_node_id

執行查詢計劃之節點的識別碼。 這是整數,不能是 NULL。 以設備為目標時使用。

spid

執行查詢計劃之 SQL Server 工作階段的識別碼。 這是整數,不能是 NULL

權限

需要有 Azure Synapse Analytics 的 CONTROL 權限。

需要有設備的 VIEW SERVER STATE 權限。

範例:Azure Synapse Analytics

A. DBCC PDW_SHOWEXECUTIONPLAN 基本語法

以下範例查詢會針對每個主動執行的散發傳回 sql_spid

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

如果您對工作階段 375 中 distribution_id 1 執行的內容感興趣,建議您執行下列命令:

DBCC PDW_SHOWEXECUTIONPLAN (1, 375);

範例:Analytics Platform System (PDW)

B. DBCC PDW_SHOWEXECUTIONPLAN 基本語法

執行太久的查詢是執行 DMS 查詢計劃作業或 SQL 查詢計劃作業的查詢。

如果查詢執行的是 DMS 查詢計劃作業,您可以使用以下查詢擷取未完成步驟的節點識別碼和工作階段識別碼清單。

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

根據先前查詢的結果,使用 sql_spidpdw_node_idDBCC PDW_SHOWEXECUTIONPLAN 的參數。 例如,以下命令會顯示 pdw_node_id 201001 和 sql_spid 375 的執行計劃。

DBCC PDW_SHOWEXECUTIONPLAN (201001, 375);

下一步