Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

SQL Server: Performance-Optimierung

SET STATISTICS TIME & IO

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Mittels SET STATISTICS TIME und SET STATISTICS IO gibt der SQL Server statistische Daten einer Abfrage zurück.
05:01

Transkript

Das Nächste, was ich Ihnen zeigen möchte, ist die Möglichkeit, sich für eine spezielle Abfrage Statistiken ausgeben zu lassen und zwar über die Zeit, Laufzeit, also wie lange entsprechend eine Abfrage benötigt hat, wieviel CPU-Zeit dafür verwendet wurde. Und entsprechend, wie viel IO-Aktivität da entsprechend, naja verbraten würde ich fast schon sagen, wurde für. Es ist ein bisschen was anderes, als wenn Sie eine Abfrage ausführen und unten rechts auf die Uhr schielen, die da abläuft. Da sehen Sie zwar auch ungefähr, wie lange die Abfrage ausgeführt wird, aber es ist zum einen natürlich relativ ungenau, es sind nur Sekunden, und zum anderen ist das natürlich auch das, was generell ausgeführt wird. Wie lange also der Batch, wenn Sie mehrere Abfragen haben, wie lange der Batch letztendlich ausgeführt wird und Sie bekommen keine Informationen, wieviel CPU-Zeit dahinter liegt und Sie bekommen keine Informationen, wieviel IO-Tätigkeit für die Abfrage aufgewandt werden musste. Insofern macht es durchaus Sinn, sich kurz anzuschauen, wie man sich diese detaillierten Statistiken einfacher anzeigen lassen kann. So, im SQL Server Management Studio habe ich auch schon die richtige Datei geöffnet. Sie können die Statistiken abrufen, indem Sie einfach sagen "SET STATISTICS TIME ON" oder "SET STATISTICS IO ON". Wenn ich das ausführe, komm schon, dann bekomme ich über die Messages dann immer mitgeteilt, wie lange das entsprechend gedauert hat, das Statement auszuführen. Die erste Zeit ist dann die CPU-Zeit, die zweite ist die tatsächlich verstrichene Zeit, also sozusagen die "work clock time", wie man so sagt. Das heißt, das ist der Zeitraum, der verstrichen ist. Die CPU-Zeit kann natürlich höher sein, wenn Sie mehrere Kerne haben und die entsprechend effektiv an etwas arbeiten, dann fällt natürlich sehr viel mehr CPU-Zeit an. So , dann kann ich jetzt testweise zum Beispiel einmal den Cache leeren. Zeigt er mir sogar an, wie lange das gebraucht hat. Und Sie sehen hier CPU-Zeit 15 Millisekunden, das entsprechend 503, das heißt, da kann eine ganze Menge IO-Tätigkeit natürlich noch... Dazu gehört dann, die werden jetzt hier so nicht angezeigt, aber wenn ich zum Beispiel so ein Statement laufen lasse, dann kriege ich zum einen das gewohnte Ergebnis, zum anderen sagt er mir, wie lange das Ganze wirklich ausgeführt wurde. Sie sehen, es ist mehr CPU-Zeit als "elapsed time". Das heißt, in 975 Millisekunden wurden 1.062 Millisekunden CPU-Zeit verwendet. Und ich kann zum Beispiel hier durch die Statistics IO sehen, dass es entsprechend logical reads von 259.409 gab. Dafür aber letztendlich physical reads 0 und dafür aber entsprechende "read-ahead reads". Das bedeutet, SQL Server wird einmal gelesen und einfach in... Sozusagen in der Vermutung, dass mehr Daten benötigt werden, einfach ein sehr großer Teil der Tabelle eingelesen, obwohl die vielleicht gerade nicht benötigt werden, an der Stelle. Wenn ich das Statement nochmal ausführe, sieht es ein bisschen anders aus. Das Ergebnis ist natürlich das gleiche, aber ich sehe zumindest, dass hier diese read-ahead reads auf jeden Fall minimiert wurden. Dafür sind die logische Reads, die logical reads die Gleichen. Wenn ich noch ein drittes Mal ausführe, dann kann es sein, dass die read-ahead reads sozusagen wirklich dann irgendwann auf null runtergehen, die physical reads ebenfalls auf null. Das bedeutet im Wesentlichen, dass der SQL Server das Ergebnis dieser Abfrage jetzt komplett aus dem Speicher genommen hat. Das heißt, er hat zwar logische Leseoperationen durchgeführt, aber die haben sich nie wirklich auf die IO-Systeme durchgezogen, weil letztendlich alles schon im Speicher war. Und Sie sehen dann hier unten zum Beispiel die CPU-Zeit, das sind 973 Millisekunden. Und letztendlich wurden die halt durch die verschiedenen Kerne in 136 Millisekunde Gesamtzeit aufgewandt. Dann kann ich das Ganze wieder ausschalen. Es gibt eine etwas kompaktere Syntax. Wirkönnen sagen "SET STATISTICS TIME, IO OFF". Das wäre dann sozusagen das was oben im Zweizeiler war, jetzt im Einzeiler. Und wenn Sie möchten, können Sie diese Einstellungen sozusagen auch automatisch verwenden. Sie können hier unter Tools Options hingehen, also in die Einstellungen. Dann können Sie unter Query Execution SQL Server Advanced hier die Statistiken direkt aktivieren für neue Abfragefenster. Ich mache das mal testweise. Ich nehme dafür nochmal diese Abfrage rüber, mache ein neues Fenster auf. Führe das einfach mal in diesem neuen Fenster aus. Und ich bekomme genau das Gleiche zu sehen, was ich auch quasi gerade schon an Werten hatten, das heißt, ich muss es nicht explizit einschalten. Das kann natürlich störend sein. Letztendlich können hier sehr viele Informationen auflaufen, die man gar nicht mehr so genau den einzelnen Statements zuordnen kann. Deshalb ist es vielleicht eine gute Idee, die Einstellungen nur dann zu aktivieren, wenn man sie wirklich braucht und deshalb nehme ich sie auch hier in meine Einstellungen im SQL Server Management Studio wieder zurück.

SQL Server: Performance-Optimierung

Lernen Sie den Umgang mit Indizis und Tools, um die Leistungsfähigkiet Ihrer SQL Server Datenbank effektiv zu erhöhen.

3 Std. 20 min (32 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:04.05.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!