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

SQL Server: Performance-Optimierung

Versteckte Bremsen – Demo

Testen Sie unsere 2021 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Hier demonstriert der Trainer das Aufspüren von versteckten Bremsen mit dem SQL Server Profiler.
05:00

Transkript

Ich bin dann hier wieder zurück ins SQL Server Management Studio gewechselt. Und das Tool, das mir hilft, zu erkennen, was für unnötige Abfragen mein SQL-Server ausführen muss, ist hier unter "Tools" der SQL Server Profiler. Der Profiler selber ist eigentlich eine Wissenschaft für sich wieder, aber trotzdem kann ich da auf relativ einfache Art und Weise herausfinden, welche Statements von einer Anwendung, oder generell eigentlich von allen Anwendungen, gegen den Server geschickt werden, um zu sehen: Habe ich den Fall, dass beispielsweise gerade im Fall unserer Rechnung und der Rechnungspositionen statt ein oder zwei Statements ganze 30 oder 31 an den Server geschickt werden, die er dann auch entsprechend bearbeiten muss. Und ich gehe einfach hin, mit entsprechenden Berechtigungen, verbinde mich mit dem Server und kann eigentlich direkt auf "Run" klicken an der Stelle. Nachteil wäre jetzt, dass er jedes Statement von jeder Verbindung, die er entsprechend ausführen muss, der SQL-Server, hier gleich in meinem Protokoll landen würde, und das könnte natürlich relativ viel sein. Wenn Sie Entwicklungsserver haben, wo Sie relativ einsam unterwegs sind, können Sie direkt "Run" drücken. Das ist dann kein Problem. Wenn Sie allerdings auf einem Server sind, wo eine ganze Reihe von Kollegen unterwegs sind oder wo die Produktion möglicherweise läuft, dann wäre ich da ein bisschen vorsichtiger. Dann können Sie hingehen und hier auf "Events Selection" klicken, und hier auf "Column Filters". Jetzt bekomme ich so einen kleinen Dialog, den ich natürlich auch nicht größer machen kann. Warum auch? Und da kann ich dann zum Beispiel Einschränkungen durchführen. Ich kann hier sagen, welchen Login-Namen ich denn gerne hätte, oder welcher nicht sein darf. Ja, das heißt, ich könnte hier ohne Weiteres hingehen und sagen: Okay, ich habe sowas wie "tkans". Das ist entsprechend hier mein Login-Name, und weil das ein Like ist, könnte ich quasi so etwas vorne und hinten dranstellen, und das würde dann im Wesentlichen bedeuten, dass er nur solche Zeilen protokolliert, die entsprechend genau von einem User, in dem Fall einem Login, mit diesem Namen, oder diesem Muster quasi, abgeschickt wurden. Das gleiche kann ich machen, ich nehme das mal zurück, das brauche ich nämlich jetzt nicht an der Stelle. Ich könnte zum Beispiel auch hingehen und sagen: Ich möchte zum Beispiel das Ganze mit einem NT-User-Namen haben, das heißt damit könnte ich dann nochmal ein bisschen differenzierter vorgehen, wenn es um entsprechende NT-Logins geht. Ich könnte auch andere Filter noch etablieren. Wichtig ist hier, dass ich sagen kann: Ich möchte entsprechend nur von diesem User oder nur von dieser Anwendung. Wenn ich zum Beispiel einen ApplicationName im Connection String untergebracht habe, kann ich das entsprechend hier relativ leicht filtern. So, wenn ich das getan habe, oder wenn ich das schlicht und ergreifend nicht tun muss, dann kann ich hier auf "Run" klicken. Und was in dem Moment hier passiert, Sie sehen hier auf meiner Demo-Maschine, ist relativ wenig. Ich gehe jetzt aber mal hin, mache daraus ein Symbol und mache eine neue Abfrage. Und: "Hallo Welt". Selbst wenn ich das ausführe, dann wird das gleich in meinem Protokoll drinstehen, obwohl das überhaupt keine gültige Abfrage war. Ich könnte aber auch hingehen und ein "SELECT * FROM sys.databases" machen, das ausführen. Dann kriege ich unten ein Ergebnis. Und ich kann dann in meinen Profiler zurückgehen, kann hier oben auf "Pause" klicken und habe dann die Möglichkeit, entsprechend zu sehen, was für Statements ausgeführt wurden. Die kommen immer so in Pärchen, und zwar einmal: Ich beginne mit der Verarbeitung, ich habe sie abgeschlossen. Und ich kann dann zumindest erkennen, dass die einzelnen Statements, wie lange die gelaufen sind. Sie sehen hier, in der Zeile, wo, na komm schon, "BatchCompleted" steht, habe ich dann hier Informationen, die mir sagen, wie viele Reads, wieviel CPU und so weiter und so fort benötigt wurden, aber ich sehe auch, dass das Statement erstmal überhaupt ausgeführt wurde, und Sie sehen sowohl das relativ seltsame T-SQL-Statement, das ich ganz am Anfang abgesetzt habe, Sie sehen aber auch mein "SELECT * FROM sys.databases" an der Stelle. Das heißt, ich sehe alle Statements und kann dann natürlich sehen: Okay, ich habe statt zwei erwarteter Statements, habe ich Hunderte, oder jedes Mal, wenn ich auf meiner Web-Anwendung auf F5 drücke, kriege ich wieder ein Dutzend neuer Abfragen, und das bremst einfach. Das ist einfach die Summe, die da relativ unangenehm letztendlich die Anwendung aufhält an der Stelle. Auf den Profiler werde ich später noch ein bisschen im Detail eingehen. Hier aber ein sehr einfaches Mittel, um zu erkennen, was der Server denn wirklich ausführen muss. Und das können Sie sowohl bei der Entwicklung, optimaler Weise aber auch später in der Produktion laufen lassen, und dann sehen Sie relativ schnell, welche Last Sie dem SQL-Server an der einen oder anderen Stelle zugemutet haben.

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!