Affichage de plans d'exécution graphique (SQL Server Management Studio)

SQL Server Management Studio est un outil graphique interactif qui permet au développeur ou à l'administrateur de la base de données d'écrire des requêtes, d'exécuter simultanément plusieurs requêtes, de visualiser les résultats, d'analyser le plan de requête et de bénéficier d'une assistance pour améliorer les performances des requêtes. Les options du Plan d’exécution affichent, sous forme graphique, les méthodes d'extraction de données choisies par l'optimiseur de requête SQL Server. Ce plan d'exécution graphique utilise des icônes pour représenter l'exécution de requêtes et d'instructions spécifiques dans SQL Server plutôt que par la représentation tabulaire générée par les options d'instructions SET Transact-SQL SET SHOWPLAN_ALL ou SET SHOWPLAN_TEXT, ou la représentation XML résultant de l'instruction SET SHOWPLAN_XML. L'affichage graphique s'avère très utile pour la compréhension des caractéristiques de performances d'une requête. SQL Server Management Studio signale les statistiques manquantes, contraignant ainsi l'optimiseur de requête à faire des estimations sur la sélectivité des prédicats, ce qui permet la création aisée des statistiques manquantes.

Notes

Les plans d'exécution ne sont pas affichés pour les procédures stockées chiffrées ou les déclencheurs.

Utilisations des options des plans d'exécution

Ouvrez ou tapez un script Transact-SQL qui contient les requêtes que vous voulez analyser dans l'éditeur de requête Management Studio. Lorsque le script est chargé dans l'éditeur de requête Management Studio, vous pouvez choisir d'afficher un plan de l'exécution estimé ou le plan d'exécution réel en cliquant sur le bouton Afficher le plan d'exécution estimé ou Inclure le plan d'exécution réel dans la barre d'outils de l'éditeur de requête. Si vous cliquez sur Afficher le plan d'exécution estimé, le script est analysé et un plan d'exécution est généré. Si vous cliquez sur Inclure le plan d'exécution réel, vous devez exécuter le script avant de générer le plan d'exécution. Lorsque le script est analysé ou exécuté, cliquez sur l'onglet Plan d'exécution pour afficher une représentation graphique du résultat du plan d'exécution.

Pour utiliser le plan d'exécution graphique dans Management Studio, ainsi que les options Showplan de l'instruction Transact-SQL SET, les utilisateurs doivent avoir les autorisations nécessaires pour exécuter les instructions et les requêtes Transact-SQL. Les utilisateurs doivent avoir l'autorisation SHOWPLAN pour toutes les bases de données qui contiennent des objets référencés. Pour plus d'informations, consultez Sécurité Showplan.

Lecture des résultats du plan d'exécution graphique

Pour afficher le plan d'exécution, cliquez sur l'onglet Plan d'exécution dans le volet Résultats. Le résultat du plan d'exécution graphique dans SQL Server Management Studio se lit de droite à gauche et de haut en bas. Chaque requête du traitement analysé est affichée, de même que le coût de chaque requête sous la forme d'un pourcentage du coût total du traitement. Pour plus d'informations sur les icônes utilisées pour afficher les plans d'exécution dans Management Studio, consultez Icônes du plan d'exécution graphique (SQL Server Management Studio).

Les descriptions ci-dessous fournissent des conseils pour interpréter les résultats de l'exécution graphique dans Management Studio :

  • Chaque nœud de l'arborescence est représenté sous forme d'une icône indiquant l'opérateur physique et logique utilisé pour l'exécution partielle de la requête ou de l'instruction.

  • Chaque nœud est associé à un nœud parent. Les nœuds enfants ayant les mêmes parents sont représentés dans la même colonne. Cependant, tous les nœuds de la même colonne n'ont pas nécessairement les mêmes parents. Des règles avec des pointes de flèche relient chaque nœud à son parent.

  • Les opérateurs sont représentés sous forme de symboles associés à un parent spécifique.

  • La largeur de la flèche est proportionnelle au nombre de lignes. Le nombre réel de lignes est utilisé lorsqu'il est disponible. Dans le cas contraire, c'est le nombre estimé qui est utilisé.

  • Lorsque la requête comprend plusieurs instructions, plusieurs plans d'exécution de requête se dessinent.

  • Les éléments des arborescences sont définis par le type d'instruction exécutée.

  • Pour les requêtes parallèles qui mettent en œuvre plusieurs unités centrales, l'onglet Propriétés de chaque nœud du plan d'exécution graphique affiche des informations sur les threads du système d'exploitation utilisés. Pour afficher les propriétés d'un nœud, cliquez avec le bouton droit sur le nœud, puis cliquez sur Propriétés. Pour plus d'informations sur les requêtes parallèles, consultez Traitement de requêtes en parallèle.

    Type d'instruction

    Élément de l'arborescence

    Transact-SQL et procédures stockées

    Si l'instruction est une procédure stockée ou une instruction Transact-SQL, elle devient la racine de l'arborescence du plan d'exécution graphique. La procédure stockée peut avoir plusieurs enfants qui représentent des instructions appelées par la procédure stockée. Chaque enfant est un nœud ou une branche de l'arbre.

    Langage de manipulation de données (DML - Data Manipulation Language)

    Si l'instruction analysée par l'optimiseur de requête SQL Server est une instruction DML, par exemple SELECT, INSERT, DELETE ou UPDATE, celle-ci devient la racine de l'arbre. Les instructions DML peuvent avoir jusqu'à deux enfants. Le premier enfant est le plan d'exécution de l'instruction DML. Le second enfant représente un déclencheur, s'il est utilisé dans ou par l'instruction.

    Conditionnelle

    Le plan d'exécution graphique divise les instructions conditionnelles telles que IF…ELSE (si la condition existe, exécutez ce qui suit, sinon exécutez cette instruction) en trois enfants. L'instruction IF…ELSE est la racine de l'arbre. La condition IF devient un nœud du sous-arbre. Les conditions THEN et ELSE sont représentées sous forme de blocs d'instructions. Les instructions WHILE et DO-UNTIL sont représentées à l'aide d'un plan similaire. IF et WHILE ont leurs propres icônes.

    Opérateurs relationnels

    Les opérations effectuées par le moteur d'interrogation, comme les analyses de table, les jointures et les agrégations, sont représentées sous forme de nœuds sur l'arbre.

    DECLARE CURSOR

    L'instruction DECLARE CURSOR est la racine de l'arborescence du plan d'exécution graphique, accompagnée de son instruction associée sous forme d'enfant ou de nœud.

Des couleurs différentes sont associées à chacun des trois types d'icônes : Les icônes des itérateurs (opérateurs physiques et logiques) sont bleues, celles des curseurs jaunes et les éléments de langage sont verts.

Info-bulles des nœuds du plan d'exécution graphique

Chaque nœud affiche des info-bulles lorsque le curseur est pointé dessus (voir le tableau ci-dessous). Tous les nœuds d'un plan d'exécution graphique ne contiennent pas toutes les info-bulles décrites ici.

Info-bulle

Description

Opération physique

Opérateur physique utilisé (ex. jointure de hachage ou boucles imbriquées). Les opérateurs physiques affichés en rouge indiquent que l'optimiseur de requête a émis un avertissement concernant, par exemple, des statistiques de colonne ou des prédicats de jointure manquants. Ceci peut contraindre l'optimiseur de requête à choisir un plan de requête moins efficace que prévu. Pour plus d'informations sur les statistiques des colonnes, consultez Utilisation des statistiques pour améliorer les performances des requêtes.

Lorsque le plan d'exécution graphique suggère la création ou la mise à jour des statistiques, il est possible de créer immédiatement les index et les statistiques des colonnes manquants au moyen des menus contextuels dans l'Explorateur d'objets SQL Server Management Studio. Pour plus d'informations, consultez Rubriques de procédures relatives aux index.

Opération logique

Opérateur logique qui correspond à l'opérateur physique (ex. opérateur de jointure). L'opérateur logique figure à la suite de l'opérateur physique en haut de l'info-bulle.

Estimated Row Size

Taille estimée de la ligne produite par l'opérateur (en octets).

Estimated I/O Cost

Coût estimé de toutes les E/S pour cette opération. Cette valeur doit être aussi faible que possible.

Estimated CPU Cost

Coût estimé de toutes les activités de l'unité centrale pour cette opération.

Estimated Operator Cost

Coût de l'optimiseur de requête pour l'exécution de cette opération. Le coût de cette opération exprimé en pourcentage du coût total de la requête figure entre parenthèses. Comme le moteur d'interrogation sélectionne l'opération la plus efficace pour exécuter la requête ou l'instruction, cette valeur doit être la plus faible possible.

Estimated Subtree Cost

Coût total de l'exécution de cette opération et de toutes les opérations qui la précèdent dans le même sous-arbre.

Estimated Number of Rows1

Nombre réel de lignes générées par l'opérateur.

1 Cette info-bulle affiche le Nombre de lignes dans un plan d'exécution réel.

Notes

Les informations qui étaient disponibles dans les champs Argument des plans d'exécution graphique SQL Server 2000 s'affichent maintenant séparément dans les info-bulles des plans d'exécution graphique.

Propriétés des nœuds du plan d'exécution graphique

Cliquez avec le bouton droit sur un nœud, puis cliquez sur Propriétés pour afficher des informations détaillées sur ce nœud du plan d'exécution graphique.