2008-10-02 9 views
4

Je souhaite optimiser un serveur SQL de production. Après avoir fait des ajustements (comme changer le degré de parallélisme), je veux savoir si cela a aidé ou blessé les temps d'exécution des requêtes. Cela ressemble à un compteur de performance évident, mais pour la dernière demi-heure, j'ai cherché Google et la liste de compteurs dans perfmon, et je n'ai pas été en mesure de trouver un compteur de performance pour SQL Server pour me donner la moyenne le temps d'exécution pour toutes les requêtes touchant un serveur. L'équivalent SQL Server de l'heure d'exécution de requête ASP.NET.Existe-t-il un compteur de performance SQL Server pour un temps d'exécution moyen?

Existe-t-il un produit qui me manque? Existe-t-il un autre moyen efficace de surveiller les temps de requête moyens pour un serveur?

Répondre

0

Moyenne sur quelle période et pour quelles requêtes? Vous devez définir ce que vous entendez par «moyen» ou cela n'a aucune signification, ce qui explique probablement pourquoi ce n'est pas un simple compteur de performance.

Vous pouvez capturer ces informations en exécutant une trace, en les capturant dans une table, puis en découpant et en découpant les temps d'exécution de plusieurs manières.

+0

"toutes les requêtes touchant le serveur", comme dans toutes les requêtes. :-) La période de temps étant ce que vous avez défini comme période dans PerfMon (la valeur par défaut est 100 secondes). SQL trace est une bonne suggestion, même si j'espérais quelque chose de plus facile. – jwanagel

1

Vous pouvez utiliser l'Analyseur de requêtes (qui est l'un des outils de SQL Server) et voir comment elles sont exécutées en interne afin de pouvoir optimiser l'indexation, etc. Cela ne vous renseigne pas sur la moyenne ou le retour à le client. Pour ce faire, vous devez vous connecter sur le client et analyser les données vous-même.

0

Cela ne donne pas exactement ce dont vous avez besoin, mais je vous recommande vivement d'essayer les rapports SQL Server 2005 Performance Dashboard, qui peuvent être téléchargés here. Il comprend un rapport sur les 20 requêtes les plus fréquentes et leur temps d'exécution moyen ainsi que de nombreuses autres requêtes utiles (requêtes les plus fréquentes d'IO, statistiques d'attente, etc.). Si vous l'installez, assurez-vous de bien noter où il est installé et suivez les instructions de la section Informations supplémentaires.

0

Le profileur vous fournira des statistiques sur les temps d'exécution des requêtes et les activités sur le serveur. Les temps de requête globaux peuvent ou peuvent ne pas signifier beaucoup sans les attacher à des travaux spécifiques et des plans de requête.

D'autres indicateurs de goulots d'étranglement des performances sont les compteurs de contention de ressources (statistiques générales, verrous, verrous). Vous pouvez les voir à travers les compteurs de performance. La recherche d'un grand nombre d'opérations d'analyse de table ou d'autres opérations n'utilisant pas d'index peut vous indiquer que l'indexation peut être nécessaire.

Sur un serveur chargé, il est peu probable que l'augmentation du parallélisme affecte matériellement les performances car de nombreuses requêtes sont déjà actives à un moment donné. Là où le parallélisme vous permet de gagner est sur de grands travaux d'exécution par lots peu fréquents tels que les processus ETL. Si vous avez besoin de réduire le temps d'exécution d'un tel processus, alors le parallélisme pourrait être un bon endroit à regarder. Sur un serveur occupé effectuant une charge de travail transactionnelle avec de nombreux utilisateurs, les ressources système seront occupées à partir de la charge de travail, de sorte que le parallélisme est peu susceptible d'être une grande victoire.

4

Je ne crois pas qu'il y ait un PerfMon mais il y a un rapport dans SQL Server Management Studio:

Faites un clic droit sur la base de données, sélectionnez > Rapports standard> Statistiques d'exécution de l'objet. Cela vous donnera plusieurs très bonnes statistiques sur ce qui fonctionne dans la base de données, combien de temps il prend, combien de mémoire/io il prend, etc.

Vous pouvez également exécuter cela au niveau du serveur dans toutes les bases de données.

1

J'ai réussi à le faire en enregistrant le Trace to SQL.Lorsque la trace est ouverte

File>Save As>Trace Table

Sélectionnez le SQL, et une fois sa course importée

select avg(duration) from dbo.[YourTableImportName] 

Vous pouvez très facilement effectuer d'autres statistiques, max, min, etc .. compte Meilleure façon d'interroger le résultat de la trace

+0

+1 Méthode agréable. Devrait être avg() plutôt que la moyenne dans le SQL si – geographika

0

Vous pouvez utiliser Moniteur d'activité. Il est construit dans SSMS. Il vous donnera un suivi en temps réel de toutes les requêtes coûteuses sur le serveur.

Pour ouvrir Activity Monitor:

  1. Dans SQL Server Management Studio (SSMS), un clic droit sur le serveur et sélectionnez Activity Monitor.
  2. ouvert récentes requêtes coûteuses pour voir l'utilisation du processeur, Query Time moyenne, etc.

espoir qui aide.

Questions connexes