2010-11-09 5 views
0

Quelle serait la méthode recommandée pour tester les performances sur les procédures stockées? Il y a un SP qui prend environ 20 booléens et j'aimerais tester certaines des combinaisons. Il y a un autre SP avec les mêmes paramètres mais une implémentation différente et souhaiterait un moyen de comparaison. Je peux le faire manuellement dans. NET si nécessaire, mais je me demandais s'il y avait une meilleure façon. Merci!Tests de performances SQL Server

Répondre

0

Eh bien, il n'y a que 2^20 combinaisons ...

Vous pouvez faire une table des paramètres que vous souhaitez tester (bool1, bool2, bool3, ...), puis ajouter des colonnes pour les résultats ALT1 et alt2 résultats (heures de début et de fin, résultats numériques réels dans le cas où un a un bug, etc.). Puis ouvrir un curseur sur la table de paramètres (ou boucle sur SELECT TOP 1 WHERE résultat est nul) et EXEC chaque proc avec les paramètres, en enregistrant les heures de début et de fin et les résultats et toute autre chose.

Donc, à ce stade, je garderais tout dans la base de données, pas besoin de .NET pour le moment. Si les ensembles de données sont volumineux et que vous avez besoin de vérifier les performances de bout en bout, je pourrais sortir de la base de données, mais en ce moment, moins de pièces mobiles, mieux c'est.

+0

Seulement 2^20 est quelque chose de plus d'un million. :) Chaque requête peut prendre une seconde ou deux (relativement complexe). En supposant 1 seconde chacune avec seulement 10 itérations (pour obtenir de meilleures moyennes), nous regardons 1mil combinaisons * 10 itérations/60 secondes/60 minutes/24 heures = 115 jours. A part ça, j'aime votre approche et je vais essayer. –

+0

@Nelson - Droite - Je pensais que toutes ces combinaisons ne sont pas réalistes - il est également possible de déduire les combinaisons possibles des données d'application existantes (SELECT DISTINCT CASE GENDER = 'M' ALORS 1 ELSE 0 FIN COMME IsMale, CASE QUAND WEARSBRA = 'Y' ALORS 1 ELSE 0 FIN COMME WearsBra DE DEMOGRAPHICS) - il peut y avoir des cas qui ne se produisent tout simplement pas dans votre ensemble de données. –

1

Vous pouvez mesurer les performances dans Server Management Studio en exécutant les deux procédures stockées avec un plan d'exécution réel. Il vous donnera une ventilation des performances/coûts par chaque déclaration dans le sp.

Vous pouvez également vous SQL Server Profiler pour rassembler des métriques de performance.

Personnellement, j'ai tendance à utiliser une combinaison des deux précédents.

+0

J'avais besoin de quelque chose de plus haut niveau et plus automatisé comme ce que Cade a mentionné. Une fois que j'identifie une requête problématique, je peux utiliser le plan d'exécution et le profileur comme vous l'avez suggéré. –

1

Lorsque vous avez une quantité écrasante de paramètres, pensez toujours à effectuer un test par paire. Je préfère l'outil PICT.

Questions connexes