Question

Dans Peut-être que la normalisation n'est pas normale Jeff Atwood dit: "Vous mesurez automatiquement toutes les requêtes qui circulent dans votre logiciel, non?" Je ne suis pas mais j'aimerais.

Quelques fonctionnalités de l'application en question :

Était-ce utile?

La solution

En plus de la mention de SQL Profiler par Brad, si vous souhaitez le faire dans le code, alors tous les appels de votre base de données doivent être acheminés via une bibliothèque commune.Vous y insérez le code de timing, et voilà, vous savez combien de temps prend chaque requête dans votre système.

Un point d'entrée unique à la base de données est une fonctionnalité assez standard de tout ORM ou couche de base de données - ou du moins cela a été le cas dans tous les projets sur lesquels j'ai travaillé jusqu'à présent !

Autres conseils

Profileur SQL est l'outil que j'utilise pour surveiller le trafic circulant vers mon serveur SQL.Il vous permet de collecter des données détaillées sur votre serveur SQL.SQL Profiler est distribué avec SQL Server depuis au moins SQL Server 2000 (mais probablement avant cela aussi).

Hautement recommandé.

Jetez un œil à ce chapitre que Jeff Atwood et moi avons écrit sur l'optimisation des performances des sites Web.Nous couvrons beaucoup de choses, mais il y a beaucoup de choses sur le traçage et l'optimisation des bases de données :Accélérez votre site :8 conseils sur les performances ASP.NET

Le Objets abandonnés Le projet sur CodePlex a une classe pour chronométrer les blocs de code.La classe s'appelle TimedLog.Il implémente IDisposable.Vous enveloppez le bloc de code que vous souhaitez chronométrer dans une instruction using.

Si vous utilisez Rails, il enregistre automatiquement toutes les requêtes SQL et le temps qu'elles ont pris pour s'exécuter dans votre fichier journal de développement.

Je trouve cela très utile car si vous en voyez un qui prend du temps, il suffit de le copier et de le coller directement à partir de l'écran/du fichier journal, et de mettre « expliquer » devant lui dans MySQL.

Vous n’avez pas besoin de fouiller dans votre code et de reconstruire ce qui se passe.

Inutile de dire que cela ne se produit pas en production, car cela vous ferait manquer d'espace disque en une heure environ.

Si vous définissez une fabrique qui crée des SqlCommands pour vous et que vous l'appelez toujours lorsque vous avez besoin d'une nouvelle commande, vous pouvez renvoyer un Proxy réel à une SqlCommand.

Ce proxy peut ensuite mesurer la durée pendant laquelle ExecuteReader / ExecuteScalar etc.prenez en utilisant un chronomètre et enregistrez-le quelque part.L'avantage d'utiliser ce type de méthode par rapport à SQL Server Profiler est que vous pouvez obtenir des traces de pile complète pour chaque élément SQL exécuté.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top