DBCC PDW_SHOWEXECUTIONPLAN (Transact-SQL)
S’applique à : Azure Synapse AnalyticsAnalytics Platform System (PDW)
Affiche le plan d’exécution SQL Server pour une requête exécutée sur un nœud de contrôle ou un nœud de calcul Azure Synapse Analytics ou Analytics Platform System (PDW) spécifique. Cela permet de résoudre les problèmes de performances des requêtes pendant leur exécution sur les nœuds de calcul et le nœud de contrôle.
Une fois les problèmes de performances des requêtes compris pour les requêtes SQL Server SMP exécutées sur les nœuds de calcul, il existe plusieurs façons d’améliorer les performances. Les méthodes possibles pour améliorer les performances des requêtes sur les nœuds de calcul incluent la création de statistiques multicolonnes, la création d’index non-cluster et l’utilisation d’indicateurs de requête.
Conventions de la syntaxe Transact-SQL
Syntaxe
Syntaxe pour Azure Synapse Analytics :
DBCC PDW_SHOWEXECUTIONPLAN ( distribution_id , spid )
[;]
Syntaxe pour Analytics Platform System (PDW) :
DBCC PDW_SHOWEXECUTIONPLAN ( pdw_node_id , spid )
[;]
Notes
Cette syntaxe n’est pas prise en charge par le pool SQL serverless dans Azure Synapse Analytics.
Arguments
distribution_id
Identificateur de la distribution qui exécute le plan de requête. C’est un entier et il ne peut pas être NULL
. La valeur doit être comprise entre 1 et 60. Utilisé quand la cible est Azure Synapse Analytics.
pdw_node_id
Identificateur du nœud qui exécute le plan de requête. C’est un entier et il ne peut pas être NULL
. Utilisé quand la cible est une appliance.
spid
Identificateur de la session SQL Server qui exécute le plan de requête. C’est un entier et il ne peut pas être NULL
.
Autorisations
Nécessite l’autorisation CONTROL sur Azure Synapse Analytics.
Nécessite l’autorisation VIEW SERVER-STATE sur l’appliance.
Exemples : Azure Synapse Analytics
R. Syntaxe de base de DBCC PDW_SHOWEXECUTIONPLAN
L’exemple de requête suivant retourne l’exemple sql_spid
de requête pour chaque distribution en cours d’exécution.
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];
Si vous avez la curiosité de savoir ce que distribution_id
1 exécutait dans la session 375, vous exécuteriez la commande suivante :
DBCC PDW_SHOWEXECUTIONPLAN (1, 375);
Exemples : Analytics Platform System (PDW)
B. Syntaxe de base de DBCC PDW_SHOWEXECUTIONPLAN
La requête dont l’exécution est trop longue exécute une opération de plan de requête DMS ou SQL.
Si la requête exécute une opération de plan de requête DMS, vous pouvez utiliser la requête suivante pour récupérer une liste des ID de nœud et des ID de session pour les étapes qui ne sont pas terminées.
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];
Sur la base des résultats de la requête précédente, utilisez sql_spid
et pdw_node_id
comme paramètres et comme paramètres pour DBCC PDW_SHOWEXECUTIONPLAN
. Par exemple, la commande suivante indique le plan d’exécution pour pdw_node_id
201001 et sql_spid
375.
DBCC PDW_SHOWEXECUTIONPLAN (201001, 375);