DBCC PDW_SHOWEXECUTIONPLAN (Transact-SQL)

Применимо к:Azure Synapse Analytics AnalyticsPlatform System (PDW)

Отображает план выполнения SQL Server для запроса, выполняющегося в определенном вычислительном либо управляющем узле Azure Synapse Analytics или Система платформы аналитики (PDW). Позволяет устранять проблемы с производительностью запросов, выполняющихся в вычислительных узлах или управляющем узле.

После определения проблем с производительностью запросов SMP SQL Server, выполняющихся в вычислительных узлах, повысить производительность можно несколькими способами. Возможные способы оптимизации производительности запросов в вычислительных узлах включают в себя создание статистики по нескольким столбцам, создание некластеризованных индексов или использование указаний запросов.

Соглашения о синтаксисе Transact-SQL

Синтаксис

Синтаксис для Azure Synapse Analytics:

DBCC PDW_SHOWEXECUTIONPLAN ( distribution_id , spid )
[;]

Синтаксис для Система платформы аналитики (PDW):

DBCC PDW_SHOWEXECUTIONPLAN ( pdw_node_id , spid )
[;]

Примечание

Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.

Аргументы

distribution_id

Идентификатор распределения, в котором выполняется план запроса. Это целое число и не может иметь значение NULL. Значение должно находиться в диапазоне от 1 до 60. Используется при разработке для Azure Synapse Analytics.

pdw_node_id

Идентификатор узла, в котором выполняется план запроса. Это целое число и не может иметь значение NULL. Используется для устройства.

spid

Идентификатор сеанса SQL Server, в котором выполняется план запроса. Это целое число и не может иметь значение NULL.

Разрешения

Требуется разрешение CONTROL для Azure Synapse Analytics.

Требуется разрешение 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];

Чтобы узнать, что выполнялось в рамках distribution_id 1 в сеансе 375, следует выполнить приведенную ниже команду.

DBCC PDW_SHOWEXECUTIONPLAN (1, 375);

Примеры: Система платформы аналитики (PDW)

Б. Базовый синтаксис 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_spid и pdw_node_id можно использовать как параметры инструкции DBCC PDW_SHOWEXECUTIONPLAN. Например, приведенная ниже команда отображает план выполнения для pdw_node_id 201001 и sql_spid 375.

DBCC PDW_SHOWEXECUTIONPLAN (201001, 375);

Дальнейшие действия