SQL Server Monitoring: Messen der Leistung mit Systemmonitor – wichtige Leistungsindikatoren

 

Systemmonitor

Jede Instanz eines SQL Servers installiert ihre persönllichen Leistungsobjekte bzw. Leistungsindikatoren. Der unter Windows verfügbare Systemmonitor (Perfmon) stellt diese und auch OS eigene Indikatoren zur Verfügung.

Der Systemmonitor stellt dadurch  – als Werkzeug der ersten Wahl – die Real time Auslastung der Maschine dar. Natürlich könnte man den Taskmanager ebenso verwenden, aber hier sind keine weitere Messwerte für etwa SQL Server enthalten.

Systemmonitor

Unter Leistungsindikatorenprotokolle lassen sich die  gemessenen Werte per Zeitplan aufzeichnen.

 

Leistungsindikatoren

Um nun wichtige Werte für das finden von Übertätern zu finden hier ein Auswahl:

  • Prozessor: Prozessorzeit
    Diese sollte natürlich nicht auf Dauer allzu hoch sein. Messunen über 50% bis 60%, sollten abgeklärt werden (Auslagerungen, Kompilierungen etc)
  • PhysicalDisk: AverageDiskQueueLength
    Dieser Wert sollten nicht über 2 sein. Der Wert gibt nämlich an, ob Der physik. Datenträger Daten schnell genug wegschreiben kann.
  • Speicher: Seiten/sec
    Seiten, die entweder vom Speicher auf den Datenträger geschrieben werden oder davon gelesen und in den Sepicher geschrieben werden. Der Wert sollte auf Dauer kleiner als 20 sein.
  • BufferManager: BufferCacheHitRatio
    Die %-Quote gibt an, wieviel der angefragten Daten (Seiten) aus dem Speichercahce geholt werden können. Der Wert sollte größer 90% sein. Dadurch, dass der SQL Server jede Menge ´Read Ahead Vorgänge erzeugt, ist der Wert nicht allzuaussagekräftig. Bereits nach Start des SQL Dienstes weist er einen Wert von kanpp unter 100% aus… obwohl noch keine Daten abgefragt wurden??!!
  • Plan Cache: Trefferquote
    Jede Frage benötigt einen Ausführungsplan. Im günstigsten Fall liegt dieser bereits vor. Falls nicht, muss ein neuer Plan erstellt und kompiliert werden. Das kostet Prozessorzeit.
    Falls also die Prozessorleistung sehr hoch ist, sollten sie diesen Wert und Transactions / sec untersuchen. Die Trefferquote sollte so hoch wie möglich sein.
  • GenerellStatitics: User Connections
    Anzahl der Benutzerverbindungen
  • Puffer Manager: Page Life Expectancy
    Seiten werden in den Speicher geladen, um die Requests der Clients schnell bedienen zu können. Die gecachten Seiten können aufgrund von zu wenig Platz zugunsten anderer Seiten aus dem Cache entfernt werden. Der Wert sollte nicht unter 300 liegen. Sonst haben Sie zu wenig Hauptspeicher
  • SQL Statistics: Kompilierungen /sec
    Ausführungspläne bedürfen einer kompilierung und evtl auch einer Recompilierung. Diese führt zu einer höheren CPU Last. Sollte dieser Wert sich erhöhen, können Sie evtl durch paramtriesierung ihrer Abfragen eine Verbesserung erreichen.
  • SQL Statistics: Recompilierungen /sec
    Dieser Wert steigt, sobald kompilierte Pläne durch verschiedene SET Einstellungen erneut kompiliert werden müssen.
  • SQL Benutzerdefinierbar: User Counter 1 (bis 10)
    Ein Indikator der mir persönlich sehr gut gefällt. Übergibt man der sp_Usercounter1 eine ganze Zahl  so wird diese sofort im Systemmonitor dargestellt. SO ließe sich z.B. der Tagesumsatz im Verhältnis zur CPU oder Speicher darstellen. In Worten: Ab einem bestimmten  Umsatz proTag braucht man eine besser CPU.  😉

 

Reblog this post [with Zemanta]
Author: Fumus

5 thoughts on “SQL Server Monitoring: Messen der Leistung mit Systemmonitor – wichtige Leistungsindikatoren

  1. Hallo,

    meine Frage zum folgenden Bullet Point:

    •PhysicalDisk: AverageDiskQueueLength
    Dieser Wert sollten nicht über 2 sein. Der Wert gibt nämlich an, ob Der physik. Datenträger Daten schnell genug wegschreiben kann.

    Bezieht sich der Wert auf Linie, die Histogrammleiste oder den Bericht?
    Denn in der Linie komme ich öfter > 2, sogar weit über 2 aber dafür im Bericht immer nur 0.xxx, also nie > 2.

    Danke!
    Gruß
    Markus

    1. Der Wert kann durchaus mal über 2 gehen. Aber auf längere Dauer sollte dieser Wert doch deutlich unter 2 sein. In HyperV und auch anderen VMs habe ich feststellen müssen, dass der Wert zwar zur Verfügung steht, aber bei der Auswertung fehlt. Sofern der Datenträger nicht partitioniert ist, sollte grundsätzlich auch die Warteschlange des logischen Datenträgers verwendet werden können. Was ist nun längere Dauer 😉 ? Das ist wohl vom Einzelfall abhängig.

    1. ..So siehst zumindest aus… je nach Zeitspanne deines Perfmons. Standard ist 1 min 40. Das wäre nicht sehr aussagekräftig. In der grafischen Ansicht kann man übrigens auch Max/Min und AVG Werte sehen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert