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.

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.  😉

 

Fumus

View Comments

  • 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

    • 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.

    • ..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.

Share
Published by
Fumus

Recent Posts

SQL Server 2019 – static data masking – Du Opfer!

In SQL Server 2016 wurde das sog. dynamic data masking eingeführt. Eine Möglichkeit Daten bei…

5 Jahren ago

MinRole – Oder wie alles etwas einfacher wird

Seit Sharepoint Server 2007 präsentiert sich die Installation immer auf die gleiche Weise. Gerade mal,…

8 Jahren ago

Schritt für Schritt: SQL 2016 – Dynamic Data Masking

Es weihnachtet! Gerade bekam ich von einer Kollegin Plätzchen angeboten mit der Größe eines Diskus…

8 Jahren ago

Schritt für Schritt: SQL Server 2016 – temporal tables

Nein, bitte nicht verwechseln: temporal tables haben nichts zu tun mit temporary tables table variables…

9 Jahren ago

SQL Server 2016 Schritt für Schritt–Installation und First Look

SQL Server 2016.. habe ich schon erwähnt, dass ich den ziemlich cool finde? Wollen wir…

9 Jahren ago

SQL Server 2016 – CTP2

Nach langer Zeit wieder mal eine Artikel von mir.. der mich besonders erfreut. SQL Server…

9 Jahren ago