248
Chapitre 8. Optimisation du code SQL
• SET SHOWPLAN_ALL ON : affiche le plan d’exécution estimé détaillé (avec estimations et alertes) en format texte (une ligne de jeu de résultat par opérateur
du plan), sans exécuter l’instruction.
• SET STATISTICS XML ON : affiche le plan d’exécution complet réel en format
XML, après exécution de l’instruction.
• SET STATISTICS PROFILE ON : affiche le plan d’exécution détaillé réel en
format texte (une ligne de jeu de résultat par opérateur du plan), après exécution de l’instruction.
Les commandes SET SHOWPLAN... doivent être lancées dans leur propre batch,
sans aucune autre instruction. Vous devez donc les séparer de vos requêtes par un GO
dans SSMS.
Les commandes non XML sont considérées par Microsoft comme en voie d’obsolescence, elles seront peut-être supprimées dans une version ultérieure de SQL
Server. SQL Server 2008 les supporte toujours.
Les commandes SET SHOWPLAN... affichent donc le plan estimé, et les commandes SET STATISTICS le plan réel. Les quelques informations supplémentaires du plan
réel sont visibles dans le plan XML dans les éléments qui y
sont ajoutés. Sur l’affichage graphique du plan, vous les trouvez dans les affichages
détaillés lorsque vous glissez votre souris sur un opérateur, ils commencent par
« Actual... ».
Vous pouvez aussi récupérer ces plans à partir d’une trace SQL. Les événements à
sélectionner sont dans le groupe d’événements « Performance » :
L’événement Performance statistics se déclenche quand un plan d’exécution est
inséré dans le cache de plans, quand il est recompilé, ou quand il est vidé du cache.
La colonne EventSubClass contient l’identifiant du type d’événement, qui peut être
un des suivants :
0 – un nouveau batch n’est pas encore dans le cache. La colonne TextData
contient le code SQL de la requête.
1 – des instructions dans une procédure stockée ont été compilées.
2 – des instructions dans un batch de requêtes ad hoc ont été compilées.
3 – une requête a été supprimée du cache et les données historiques de performances vont être détruites.
4 – une procédure stockée a été supprimée du cache et les données historiques de
performances vont être détruites.
5 – un déclencheur a été supprimé du cache et les données historiques de performances vont être détruites.
Les types 4 et 5 ne sont disponibles qu’en SQL Server 2008.
Chapitre 8. Optimisation du code SQL
• SET SHOWPLAN_ALL ON : affiche le plan d’exécution estimé détaillé (avec estimations et alertes) en format texte (une ligne de jeu de résultat par opérateur
du plan), sans exécuter l’instruction.
• SET STATISTICS XML ON : affiche le plan d’exécution complet réel en format
XML, après exécution de l’instruction.
• SET STATISTICS PROFILE ON : affiche le plan d’exécution détaillé réel en
format texte (une ligne de jeu de résultat par opérateur du plan), après exécution de l’instruction.
Les commandes SET SHOWPLAN... doivent être lancées dans leur propre batch,
sans aucune autre instruction. Vous devez donc les séparer de vos requêtes par un GO
dans SSMS.
Les commandes non XML sont considérées par Microsoft comme en voie d’obsolescence, elles seront peut-être supprimées dans une version ultérieure de SQL
Server. SQL Server 2008 les supporte toujours.
Les commandes SET SHOWPLAN... affichent donc le plan estimé, et les commandes SET STATISTICS le plan réel. Les quelques informations supplémentaires du plan
réel sont visibles dans le plan XML dans les éléments
sont ajoutés. Sur l’affichage graphique du plan, vous les trouvez dans les affichages
détaillés lorsque vous glissez votre souris sur un opérateur, ils commencent par
« Actual... ».
Vous pouvez aussi récupérer ces plans à partir d’une trace SQL. Les événements à
sélectionner sont dans le groupe d’événements « Performance » :
L’événement Performance statistics se déclenche quand un plan d’exécution est
inséré dans le cache de plans, quand il est recompilé, ou quand il est vidé du cache.
La colonne EventSubClass contient l’identifiant du type d’événement, qui peut être
un des suivants :
0 – un nouveau batch n’est pas encore dans le cache. La colonne TextData
contient le code SQL de la requête.
1 – des instructions dans une procédure stockée ont été compilées.
2 – des instructions dans un batch de requêtes ad hoc ont été compilées.
3 – une requête a été supprimée du cache et les données historiques de performances vont être détruites.
4 – une procédure stockée a été supprimée du cache et les données historiques de
performances vont être détruites.
5 – un déclencheur a été supprimé du cache et les données historiques de performances vont être détruites.
Les types 4 et 5 ne sont disponibles qu’en SQL Server 2008.
