DBCC PDW_SHOWEXECUTIONPLAN (Transact-SQL)

適用対象:Azure Synapse AnalyticsAnalytics Platform System (PDW)

特定の SQL Server または Azure Synapse Analytics 計算ノードまたは制御ノードで実行されているクエリの Analytics Platform System (PDW) 実行プランを表示します。 クエリの計算ノードと制御ノードでの実行中に、クエリ パフォーマンスの問題のトラブルシューティングを行うにはこれを使用します。

計算ノードで実行されている SMP SQL Server クエリについて、クエリのパフォーマンスに問題があることがわかった場合、パフォーマンスを向上する方法がいくつかあります。 計算ノードでのクエリのパフォーマンスを向上させる方法として、複数列統計の作成、非クラスター化インデックスの作成、クエリ ヒントの使用が考えられます。

Transact-SQL 構文表記規則

構文

Azure Synapse Analytics の構文:

DBCC PDW_SHOWEXECUTIONPLAN ( distribution_id , spid )
[;]

Analytics Platform System (PDW) の構文:

DBCC PDW_SHOWEXECUTIONPLAN ( pdw_node_id , spid )
[;]

Note

この構文は、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 クエリ プラン操作が実行されている場合は、次のクエリを使用して、不完全な手順のノード ID とセッション ID のリストを取得できます。

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

前のクエリの結果に基づいて、DBCC PDW_SHOWEXECUTIONPLAN のパラメーターとして sql_spid および pdw_node_id を使用します。 たとえば、次のコマンドでは、pdw_node_id 201001 および sql_spid 375 の実行プランが表示されます。

DBCC PDW_SHOWEXECUTIONPLAN (201001, 375);

次のステップ