Es macht oft Sinn bereits bei der Entwicklung von SQL-Statements den Auslastungsgrad und die Laufzeit von Abfragen bestimmen zu können. Bereits in der Entwicklungsphase kann man so die SQL-Statements bezüglich Auslastungsgrad, Laufzeit, I/O und reads optimieren. Je früher man in der Entwicklung auf Performance achtet umso besser kann auf mögliche Flaschenhälse reagiert werden.
Hierfür hat Microsoft etwas vorbereitet.
EXEC sp_monitor GO <<SQL-Statement>> EXEC sp_monitor GO
Neben dem Ergebnis des SQL-Statements bekommt man viele Informationen geliefert, die Rückschlüsse auf den Auslastungsgrad erlauben.
last_run | current_run | seconds |
Hier bekommt man den Zeitpunkt des letzten Laufes, des aktuellen Laufes und die Zeitdifferenz in Sekunden ausgegeben.
cpu_busy | io_busy | idle |
Hier die CPU-Auslastung, die I/o-Auslastung und den IDLE-Wert.
packets_recived | packets_sent | packet_errors |
Hier wie viele Pakete empfangen, wie viele gesendet und wieviele Paket Fehler erfolgten ausgegeben.
total_read | total_write | total_errors | connections |
Im letzten Result wird angegeben wie viel gelesen, geschrieben wurde, wie viele Fehler erfolgt sind und wie viele Verbindungen benötigt wurden.
Wenn man wie hier im Beispiel vor und nach dem SQL-Statement sp_monitor ausführt bekommt man einen Vergleich zum vorherigen ausführen und dem aktuellen ausführen der SQL-Statement. Dies ermöglicht die genauere analyse des SQL-Statements bezüglich der Veränderung vom Auslastungsgrad.
Ausführungsrecht:
Für die Ausführung der Prozedur sp_monitor benötigt man die Mitgliedschaft der Serverrolle sysadmin.