|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Développeur .NET Inscription : décembre 2011 Messages : 28 ![]() |
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: De plus il est affiché où? Merci à l'avance |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() ![]() |
Code :
|
||
|
00
|
|
|
#3 | |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 670 ![]() |
Bonjour,
Citation:
@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Développeur .NET Inscription : décembre 2011 Messages : 28 ![]() |
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 |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() |
appuie sur la touche F5 de ton clavier
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Développeur .NET Inscription : décembre 2011 Messages : 28 ![]() |
ç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? |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() |
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 |
|
00
|
|
|
#8 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 670 ![]() |
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 ! @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
10
|
|
|
#9 | |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Citation:
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 :
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 Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
|
10
|
|
|
#10 | |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 670 ![]() |
Citation:
- 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 @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Développeur .NET Inscription : décembre 2011 Messages : 28 ![]() |
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? |
|
|
00
|
|
|
#12 | ||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 670 ![]() |
Citation:
Il faut redémarrer SQL Server Management Studio, c'est tout. Citation:
@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||
|
00
|
|
|
#13 |
|
Invité de passage
![]() Développeur .NET Inscription : décembre 2011 Messages : 28 ![]() |
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? |
|
|
00
|
|
|
#14 | ||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 670 ![]() |
Citation:
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. Citation:
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 @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||
|
00
|
|
|
#15 |
|
Invité de passage
![]() Développeur .NET Inscription : décembre 2011 Messages : 28 ![]() |
![]()
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com