J'essaie d'améliorer les performances d'une procédure stockée. Lorsque j'exécute le SP, il se termine presque instantanément, comme si quelque chose était mis en cache. On m'a dit d'utiliser les deux lignes SQL suivantes avant d'exécuter le SP dans SSMS:
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
Lorsque j'exécute le SP avec les deux lignes de code au-dessus, le SP se termine en environ 8 secondes. Cependant, cela me donne-t-il vraiment le temps d'exécution réel (comme si je l'exécutais à partir d'une application)? Comment puis-je savoir?
Réponses:
Ces commandes font deux choses:
Vous obtenez essentiellement une heure équivalente au "pire des cas" - vous venez de redémarrer le serveur et rien n'est en mémoire. Les exécutions suivantes n'ont pas à payer le coût pour extraire les données du disque car ces pages sont déjà chargées en mémoire.
Ceci est similaire à une situation réelle - votre premier utilisateur à exécuter une requête particulière devra probablement attendre plus longtemps que lors des exécutions suivantes, en supposant que vous vérifiez les mêmes données.
Une bonne méthode que j'aime utiliser est d'exécuter plusieurs fois et de prendre une moyenne. Cela est particulièrement utile dans un environnement partagé car vous n'avez pas le contrôle total sur les ressources partagées comme tempdb.
Vous pouvez également utiliser ces commandes pour obtenir plus d'informations sur ce qui se passe réellement dans les coulisses:
Ceux-ci vous donneront des informations détaillées sur les lectures de page à partir du disque (par objet), les lectures de page logique, le temps passé à compiler un plan et le temps passé à exécuter une requête.
la source
GO 5
comme dans SSMS. C'est un téléchargement gratuit, je n'essaie pas de vous vendre quoi que ce soit. sqlsentry.net/plan-explorer/sql-server-query-view.asp