Поделиться через


DBCC PDW_SHOWEXECUTIONPLAN (Transact-SQL)

Область применения: Azure Synapse Analytics Analytics Platform 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

А. Базовый синтаксис 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)

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

DBCC PDW_SHOWEXECUTIONPLAN (201001, 375);

Следующие шаги