IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Affichage du plan d'exécution graphique


Sujet :

MS SQL Server

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 64
    Par défaut Affichage du plan d'exécution graphique
    Bonjour,
    Dans SQL Server 2005, l'affichage du plan d'exécution graphique est généré par l'envoi au serveur d'un SET STATISTICS XML ON

    seulement faut il le faire une fois pour toute sur la connexion OU devant chaque requêtes ,
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SET STATISTICS XML ON SELECT * ...
    De plus il est affiché où?
    Merci à l'avance

  2. #2
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SET STATISTICS XML ON 
     
    requete_1
    requete_2
    ......
    requete_n
     
     
    SET STATISTICS XML OFF
    le plan d'affiche dans la grille de SSMS en bas après le résultat de la (les) requête(s)
    Etienne ZINZINDOHOUE
    Billets-Articles

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    seulement faut il le faire une fois pour toute sur la connexion OU devant chaque requêtes
    C'est pour la session, et cela produit le même effet que de cliquer sur le petit bouton correspondant, dans la barre d'outils

    @++

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 64
    Par défaut
    Merci, j'ai bien affichage de du plan d'exécution estimé quand je sélectionne toute ma requête et fait clic droit afficher le plan d'exécution estimé
    mais si j'encapsule ma requête avec
    SET STATISTICS XML ON
    et
    SET STATISTICS XML OFF
    quand j'exécute la requête, je n'ai plus affichage du plan d'exécution, en tout cas à l'endroit où il s'affiche avec le clic droit

    De plus j'ai vu que sur clic droit il y avait "inclure le plan d'exécution réel", j'ai cliqué dessus et exécuté la requête mais pareille ne voie rien

  5. #5
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Citation Envoyé par bibouilles Voir le message
    si j'encapsule ma requête avec
    SET STATISTICS XML ON
    et
    SET STATISTICS XML OFF
    quand j'exécute la requête, je n'ai plus affichage du plan d'exécution, en tout cas à l'endroit où il s'affiche avec le clic droit
    appuie sur la touche F5 de ton clavier
    Etienne ZINZINDOHOUE
    Billets-Articles

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 64
    Par défaut
    ça marche
    je ne veut pas paraitre lourd mais sauriez vous ce qu'est vraiment la différence avec le plan d'exécution réel et comment l’obtenir svp?

  7. #7
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Un peu de lecture ne jamais du mal

    SET STATISTICS XML

    Plans d'exécution

    Si tu as des questions après n'hésite pas
    Etienne ZINZINDOHOUE
    Billets-Articles

  8. #8
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Si vous voulez aller plus loin avec les plans d'exécution, il existe deux bons ouvrages sur le sujet :

    - Inside the SQL Server Query Optimizer, de Benjamin Nevarez, qui vient de sortir en PDF
    - SQL Server Execution Plans, que l'on trouve également en PDF

    Les deux ouvrages expliquent très clairement comment lire les plans et les interpréter, ce qui n'est malheureusement pas le cas de la documentation de SQL Server qui est assez cryptique à ce sujet, lorsque l'on aborde les icônes du plan d'exécution graphique.
    C'est une bonne base, l'expérience vous apprendra le reste.

    Je vous recommande également l'excellent SQL Sentry Plan Explorer (téléchargement en haut et à droite, n'oubliez pas le plugin SQL Server Management Studio(SSMS)), qui :

    - rend la lecture des plans d'exécution plus simple que ce que propose SSMS
    - montre parfois des choses que ne montre pas SSMS
    - montre avec quelles valeurs le plan a été généré
    - permet de voir avec facilité s'il s'agit d'un problème d'estimations des cardinalités
    - ...

    Bref depuis que je l'ai téléchargé, je ne regarde plus les plans dans SSMS : un petit clic-droit dans le plan > View in SQL Sentry Plan Explorer
    Et il est gratuit !

    @++

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par bibouilles Voir le message
    je ne veut pas paraitre lourd mais sauriez vous ce qu'est vraiment la différence avec le plan d'exécution réel et comment l’obtenir svp?
    Les plans de requête sont mis en cache de façon a ce que si une requête similaire arrive (aux valeurs près), alors on reprend le même plan de requête.
    Cependant les bases étant "vivantes", ce qui a été fait à un moment est susceptible de ne pas être le même quelques instants après.
    La différence peut être :
    • une augmentation ou diminution du volume des données
    • une distribution différentes des données
    • une valeur dans la requête radicalement différente
    • un paramétrage de session/base/serveur différent

    Tous ces éléments sont susceptible d'invalidé le plan estimé et donc d'entraîner un recalcul du plan de requête générant un plan différent au moment de l'exécution.

    Pour estimer tout cela, SQL Server se sert de statistiques de distribution des données, ainsi que de statistiques sur les mises à jour des tables (INSERT + UPDATE + DELETE).

    Tout cela est le travail de l'optimiseur...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  10. #10
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Tout cela est le travail de l'optimiseur...
    Qui doit cependant parfois être aidé d'un DBA, notamment :

    - pour la gestion des statistiques, dont il est parfois nécessaires de forcer la mise à jour
    - pour la reconstruction des index, qui au passage met à jour les statistiques relatives à l'index
    - plus rarement, ajouter des indicateurs de table, de requête ou d'index

    @++

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 64
    Par défaut
    Merci bien,
    une fois avoir expérienté les outils de MS sur le plan d'exécution:

    j'ai installé SQL Sentry Plan Explorer (64 bit car suit sur seven 64 bit) et le pluggin pour MSSMS, (j'ai arrêté la base et MSSMS avant)

    mais il ne me semble avoir rien de nouveau, en cliquant droit après avoir sélectionné la requête , ni même une fois avoir choisit d'exécuter le plan ou inclus le plan réel alors que je devrait avoir une proposition du genre "View with SQL Sentry Plan Explorer" dans le menu contextuel.

    es-ce normale? que puis-je faire d'autre?

  12. #12
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    j'ai arrêté la base et MSSMS avant
    C'est inutile, dans tous les cas (pour votre problème ou n'importe quel autre) parce que vous supprimez dans ce cas tous les caches (de données et de procédure) + les données heuristiques collectées par SQL Server ...

    Il faut redémarrer SQL Server Management Studio, c'est tout.

    mais il ne me semble avoir rien de nouveau, en cliquant droit après avoir sélectionné la requête , ni même une fois avoir choisit d'exécuter le plan ou inclus le plan réel alors que je devrait avoir une proposition du genre "View with SQL Sentry Plan Explorer" dans le menu contextuel.

    es-ce normale? que puis-je faire d'autre?
    Dans SSMS, cliquez sur le bouton Inclure de plan d'exécution réel, puis exécutez la requête : un onglet Plan d'exécution s'affiche : c'est dans celui-ci qu'il faut faire un clic-droit sur une zone vierge, pour obtenir l'option View in SQL Sentry Plan Explorer .

    @++

  13. #13
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 64
    Par défaut
    Super ça marche
    Petite question au passage suis-je mieux de travailler avec le plan d’exécution réel que celui estimé?
    Même quand ma base est quasiment vide avec personne d'autres dessus?

  14. #14
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Petite question au passage suis-je mieux de travailler avec le plan d’exécution réel que celui estimé?
    Vous pouvez travailler avec le plan d'exécution estimé, mais comme vous le disait SQLPro, celui-ci peut changer au moment de l'exécution de la requête, souvent en conséquences des modifications de données, de leur volume et des paramètres passés à la requête (s'il y en a).
    Le plan généré est compilé avec les valeurs des paramètres au moment de l'appel, et peuvent entraîner la génération d'un plan qui ne conviendra pas à la plupart des autres appels, et dans ce cas-là il faut recompiler la requête ou bien forcer le recalcul des statistiques.

    Le plan d'exécution réel vous permet de savoir ce qui s'est vraiment passé au moment de l'exécution, et révèle en outre les problèmes d'estimation de cardinalités : à la génération du plan, SQL Server a estimé, à l'aide des statistiques de colonne, qu'il y aurait un certain de nombre de lignes retournés par chaque prédicat.
    Si les statistiques ne sont pas maintenues correctement, ou bien que votre requête utilise une variable de type TABLE, c'est souvent ce qui se produit.
    En effet dans le 2e cas, SQL Server ne maintenant pas de statistiques sur de telles tables, il estimera toujours qu'il n'existe qu'une seule ligne dans celles-ci ... Sauf si vous faites suivre votre requête de l'indicateur OPTION (RECOMPILE) : à ce moment là SQL Server recalculera le plan de requête à chaque exécution, mais cela engendre un coût CPU.
    Si la requête est exécutée très fréquemment, cela crée donc une pression CPU artificielle.

    Même quand ma base est quasiment vide avec personne d'autres dessus?
    Cela n'a en principe aucune incidence sur la génération du plan de requête.
    Encore une fois, le plan est calculé en fonction des statistiques de colonnes.
    Vous pouvez donc extraire les caractéristiques des statistiques de colonne de votre base de données de production à l'aide de l'option STATS_STREAM de l'instruction DBCC SHOW_STATISTICS pour les ré-créer sur un serveur de développement à l'aide de l'instruction CREATE STATISTICS et de l'option du même nom

    @++

  15. #15
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 64
    Par défaut

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Plan d'exécution graphique
    Par devkais dans le forum Oracle
    Réponses: 4
    Dernier message: 23/02/2013, 14h33
  2. Affichage du plan d'exécution d'une requête
    Par orafrance dans le forum Contribuez
    Réponses: 1
    Dernier message: 30/12/2011, 16h01
  3. Affichage premier plan JInternalFrame
    Par theyankee76 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 28/12/2005, 19h13
  4. Réponses: 7
    Dernier message: 28/04/2004, 16h51
  5. Affichage du temps d'exécution d'une requête
    Par milka dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/03/2004, 17h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo