Frage Alle SQL-Abfragen automatisch messen


Im Vielleicht ist das Normalisieren nicht normal Jeff Atwood sagt: "Sie messen automatisch alle Abfragen, die durch Ihre Software fließen, richtig?" Ich bin nicht, aber ich würde gerne.

Einige Merkmale der betreffenden Anwendung:


5
2017-08-14 02:57


Ursprung


Antworten:


Zusätzlich zu Brad's Erwähnung von SQL Profiler, wenn Sie dies in Code tun möchten, dann Alle Ihre Datenbankaufrufe müssen über eine gemeinsame Bibliothek geleitet werden. Sie fügen dort den Timing-Code ein, und voila, Sie wissen, wie lange jede Abfrage in Ihrem System dauert.

Ein einzelner Einstiegspunkt in die Datenbank ist ein Standardmerkmal jeder ORM- oder Datenbankebene - oder zumindest in jedem Projekt, an dem ich bisher gearbeitet habe!


6
2017-08-14 03:13



SQL Profiler ist das Tool, mit dem ich den Datenverkehr zu meinem SQL Server überwachen kann. Es ermöglicht Ihnen, detaillierte Daten über Ihren SQL Server zu sammeln. SQL Profiler wurde seit mindestens SQL Server 2000 (aber wahrscheinlich auch davor) mit SQL Server verteilt.

Sehr empfehlenswert.


2
2017-08-14 03:00



Werfen Sie einen Blick auf dieses Kapitel Jeff Atwood und ich schrieb über Leistungsoptimierungen für Websites. Wir decken eine Menge Zeug ab, aber es gibt eine Menge Dinge über Datenbankverfolgung und -optimierung: Beschleunigen Sie Ihre Website: 8 ASP.NET Performance-Tipps


1
2017-08-14 07:23



Das Dropthings Projekt auf CodePlex hat eine Klasse für Timing-Blöcke von Code. Die Klasse heißt TimedLog. Es implementiert IDisposable. Sie wickeln den Code, den Sie möchten, in eine using-Anweisung ein.


0
2017-08-14 03:54



Wenn Sie Rails verwenden, werden automatisch alle SQL-Abfragen und die Ausführungszeit in Ihrer Entwicklungsprotokolldatei protokolliert.

Ich finde das sehr nützlich, denn wenn Sie etwas sehen, das eine Weile dauert, ist es ein Schritt, es einfach direkt vom Bildschirm / Logfile zu kopieren und einzufügen und in mysql 'explain' davor zu setzen.

Sie müssen nicht durch Ihren Code gehen und rekonstruieren, was passiert.

Unnötig zu sagen, dass dies in der Produktion nicht passiert, da Sie in ungefähr einer Stunde keinen Speicherplatz mehr haben.


0
2017-08-14 05:00



Wenn Sie eine Factory definieren, die SqlCommands für Sie erstellt und sie immer aufruft, wenn Sie einen neuen Befehl benötigen, können Sie a zurückgeben RealProxy zu einem SqlCommand.

Dieser Proxy kann dann messen, wie lange ExecuteReader / ExecuteScalar usw. eine StopWatch verwenden und sie irgendwo protokollieren. Der Vorteil bei der Verwendung dieser Art von Methode gegenüber Sql Server Profiler besteht darin, dass Sie vollständige Stack-Traces für jede ausgeführte SQL-Komponente abrufen können.


0
2018-02-17 11:56