J'utilise une version de SQL Server 2005 qui ne prend pas en charge le profileur, essayant de déterminer la meilleure façon de comparer les performances de deux procédures stockées. J'ai couru le plan d'exécution pour chacun, mais ce n'est pas clair pour moi lequel des métriques fournies, je devrais me concentrer sur. Est-ce que je passe et additionnez les différents coûts? Quelle est la meilleure approche? P>
Merci d'avance. p>
7 Réponses :
Regardez cet article: Mesure des performances SQL
Si vous ne souhaitez pas vous inscrire à un compte gratuit, voici une solution 1: p> 2e: p> 3ème: P> SET STATISTICS IO ON
EXEC your_sp
1ère option N'oubliez pas de IMPRESS 'ATTRATE:' + Convert (VARCHAR (20), DATDIFF (MS, @ Démarrer, @ Stop) /1000.0) + 'Secondes' i>
Définir le temps de statistiques sur les travaux bien ne savait pas que l'un merci!
Qu'en est-il de la mise en cache des données? Par exemple, je vais fréquemment exécuter une requête, disons que cela prend 3 minutes la première fois. Ensuite, j'exécute la requête à nouveau et il faut dire 15 secondes - SQL Server a évidemment mis en cache les données ou le plan de requête à la deuxième exécution afin que je ne puisse pas toujours reproduire le premier scénario de 3 minutes lent. Comment pouvez-vous constamment reproduire le temps d'exécution lent de 3 minutes sans mise en cache de données / mise en cache de plan d'interférence avec les tests?
On dirait que j'ai répondu à ma propre question - semble DBCC Dropcleanbuffers effacera le cache et produira des résultats cohérents - mssqlTips.com/sqlservertip/1360/...
La question est de savoir ce que vous optimisez? Est-ce pour la vitesse ou les ressources utilisées? P>
Si la vitesse, puis dans l'analyseur de requête, je regarderais l'exécution entre plusieurs exécutions, apporter des modifications et les temps à nouveau. P>
Si c'est des ressources, je regarderais dans le plan d'exécution. Dans ce cas, je commencerais avec les pires délinquants et travaillerais dans la liste. Les ajoutez-les vous indiqueront la performance sur toutes les performances, mais la plupart des cas, c'est un élément ou 2 qui est le cou de la bouteille. P>
Comme la plupart des questions, la réponse dépend ... Dans l'analyse finale, la seule mesure qui compte est la perception de l'utilisateur final, qui peut être affectée par de nombreuses choses, y compris non seulement la procédure stockée, mais une performance réseau, des modèles d'utilisation. (La SproC est-elle appelée 20x / jour, ou 1000x / seconde?), etc. - et la SPROC peut ne pas être le facteur déterminant. p>
Mais si la procédure stockée est la "pièce si le puzzle" qui a l'impact négatif majeur sur la perception de l'utilisateur final de certaines fonctions, vous devez examiner le temps écoulé pour exécuter la procédure stockée. Mais cela peut être affecté par de nombreuses métriques sous-jacentes et faire quoi que ce soit à ce sujet, vous devez les analyser tous pour déterminer lesquels d'entre eux est le principal contributeur majeur ou primordial à la performance globale du PROC stockée. p>
Vous pouvez toujours placer un harnais de test pour appeler vos procédures stockées et mesurer les délais d'appel. Malheureusement, vous n'allez pas obtenir les détails sur les parties de la procédure stockée causant le ralentissement. P>
Vous pouvez toujours exécuter la procédure stockée à la main dans l'analyseur de requête et mesurer les résultats aussi bien. Le harnais .NET n'autorise que le processus pour vous. P>
La solution simple à faible sourcil consiste à les exécuter avec des instructions d'impression imprimant l'heure d'exécution sur les différentes pièces. Cela ne vous aidera pas si le problème de la performance est plus subtil et trouvé en production uniquement, mais si vous pouvez la reproduire dans votre environnement de test, vous devriez être bien. P>
Si vous utilisez quelque chose comme p>
Ensemble showplan_all sur p>
Regardez la valeur de la colonne TOTAALSUBTREECOST pour la ligne avec l'EXE YourProcoDurename P>
Cela pourrait aider: p>
http://technet.microsoft.com/en-us/library /ms180765.aspx P>
Une technique pratique Si vous essayez de comparer les performances de deux PROC ou des énoncés consiste à sélectionner les deux blocs de SQL dans l'analyseur de requête et à exécuter le plan de requête. Le plan vous indiquera le pourcentage de coût de chaque bloc par rapport à l'autre. Ce n'est pas une preuve totale. Je l'ai vu me dire que l'un était moins cher quand il était clairement plus cher quand réellement couru, mais pour la plupart, c'est un bon tour rapide. P>
Assurez-vous également de définir des statistiques IO sur et d'exécuter chaque bloc. Cela vous dira combien d'IO chacun consommera.