Erstellen der SQL Server-Leistungsbasisüberwachung


8

Um einen Überblick und vergleichbare Daten zu erhalten, besteht meine aktuelle Aufgabe darin, eine Leistungsbasis zu erstellen, um einige Zahlen zu den verschiedenen produktiven SQL Server-Instanzen zu erhalten.

Meine Gedanken sind:

  • Ich möchte mehrere DMVs verwenden
  • Ich möchte einen Profiler-Trace einbinden (inkl. Exec. Pläne)
  • Ich möchte Perfmon-Daten einschließen

Was ich also zu erreichen versuche, ist eine allgemeine Leistungsüberwachung, die startbar und stoppbar (auch planbar) ist und Folgendes zurückgibt:

  1. Alle Informationen, die erforderlich sind, um den Erfolg laufender Aufgaben zur Leistungsoptimierung zu ermitteln

  2. Einige aggregierte, einfache Zahlen, die helfen, den langfristigen Fortschritt zu visualisieren. für das Management ;-)

  3. Re-ausführbare Ausführungspläne innerhalb des Profiler-Trace, um einzelne Warteschlangenänderungen und Verbesserungen durch Indexoptimierungsaufgaben zu vergleichen

Ich habe einige Informationen gefunden, die die Erstellung von Leistungsbasislinien beschreiben. Die meisten von ihnen sind entweder sehr kompliziert oder konzentrieren sich nur auf einen der gewünschten Leistungsindikatoren (meistens Perfmon-Daten).

Das am besten passende Beispiel / die am besten passende Beschreibung war die folgende: Erstellen einer Leistungsbasislinie für SQL Server

Die Frage ist:

Hat jemand Erfahrung damit, diese Art von Leistungsmonitor schnell und einfach zu erstellen?


3
Ein paar Informationen, die Sie von Brent Ozar Sp_Blitz erhalten können. Weitere Referenzlinks Hier und Hier
Shanky

3
Ich denke, die kurze Antwort lautet: Nein. Sie müssen sich Zeit nehmen, um zu skizzieren, was Sie für die Basisleistung benötigen. Basierend auf dieser Einschätzung müssen Sie die Abfragen zusammenstellen, um die Informationen zu sammeln und die Datenbankobjekte zum Speichern der Informationen zu erstellen. Zusätzlich zu @ Shankys Vorschlag können Sie auch sp_whoisactive verwenden , um nützliche Informationen zu sammeln
tommyfly

6
Sie können auch ein Drittanbieter-Tool in Betracht ziehen, das Baselining ausführt (und darüber hinaus eine ganze Menge). Was Sie vorschlagen, ist eine Menge Arbeit neu zu erfinden, die andere bereits geleistet haben. Nein, sie sind nicht frei, aber Ihre Zeit ist es auch nicht (und das Management wird sich dessen bewusst sein).
Aaron Bertrand

Hallo Aaron, können Sie bitte ein Drittanbieter-Tool bereitstellen, das dies tut
TheGameiswar

3
Entscheiden Sie sich für SQLSentry . Ich habe es in meinem vorherigen Job benutzt und es ist ein exzellentes Tool + habe exzellenten Support und Leute in der Community wie @AaronBertrand :-)
Kin Shah

Antworten:


8

Mehr als ein Jahr später möchte ich alle über meine Erfahrungen und das Endergebnis dieser Frage / dieses Themas informieren.

Ich fing an, Dinge selbst zu erschaffen. Anfangs folgte ich dem Artikel Sammeln und Speichern historischer SQL Server-Leistungsindikatordaten mit CMVs von Tim Ford, um etwas auf den neuesten Stand zu bringen und diese mit den Daten zu erweitern, die ich sammeln wollte. Daher führe ich einmal pro Tag mehrere gespeicherte Prozeduren auf jedem SQL Server aus, die bestimmte Informationen von DMVs sammeln und die Ergebnisse auf dem lokalen Server in einer Datenbank speichern. Dies umfasst Indexverwendung, fehlende Indizes, bestimmte Protokolleinträge wie Autogrow, Servereinstellungen, Anwendungsdatenbankeinstellungen, Fragmentierung, Jobausführung, Transaktionsprotokollinformationen, Dateiinformationen, Wartestatistiken und mehr.

Zusätzlich habe ich Brent Ozars Ergebnisse der regulären Ausführung von sp_blitz zu diesem Repository hinzugefügt, um zusätzliche wertvolle Hinweise zum Arbeiten, Verbessern und Berichten zu sammeln.

Alle Daten werden später von dort in einem dedizierten SQL-Überwachungsserver gesammelt. Auf diese Weise erstelle ich einen gebündelten Speicher für leistungsrelevante Informationen zu allen meinen Servern und verwende diesen als Grundlage für Untersuchungen und Berichte.

Dann habe ich Excel-Tabellen erstellt und Berichte mithilfe von Berichtsdiensten analysiert und interpretiert. Einige Beispiele:

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Außerdem habe ich einige Leistungsindikatoren konfiguriert, die mit TYPEPERF überwacht werden, inspiriert vom Artikel " Sammeln von Leistungsdaten in einer SQL Server-Tabelle " von Fedor Georgiev.

Von meiner SQL Monitoring-Instanz aus löse ich typeperf aus, um eine konfigurierbare Anzahl von Samples mit einem konfigurierbaren Sample-Intervall auszuführen und zu sammeln und die Ergebnisse in meiner zentralen Überwachungsdatenbank zu speichern.

Dies ermöglicht es mir, langfristige Leistungswerte zu beobachten, Beispiel:

Geben Sie hier die Bildbeschreibung ein

Nach einer Weile, in der Basisinformationen gesammelt wurden, stellte sich heraus, dass eine Menge Wartungsarbeiten erforderlich sind, um fehlgeschlagene Jobs zu untersuchen und Fehler zu beheben (z. B. für den Fall, dass eine Datenbank offline geschaltet wurde, einige) Skripte fehlgeschlagen), Einstellungen beibehalten, nachdem ein Server ersetzt wurde ...

Außerdem muss die Datenbank, in der alle Datensätze selbst erfasst werden, gewartet und die Leistung optimiert werden, sodass zusätzliche Arbeiten erforderlich sind, um die Daten nützlich zu halten ...

Was schließlich völlig fehlt, ist die Fähigkeit, Dinge zu betrachten, die live passieren. Im besten Fall kann ich feststellen, was möglicherweise am nächsten Tag nach dem Ausführen der Datensammler vor sich ging. Auch fehlen alle Details. Ich habe keinen Zugriff auf Deadlock-Diagramme. Ich kann keine Abfragepläne von Abfragen anzeigen, die in einem verdächtigen Zeitraum ausgeführt wurden.

All dies veranlasste mich, das Management zu belasten, um Geld für eine bevorzugte Lösung auszugeben, die ich nicht selbst erstellen kann.

Die endgültige Entscheidung war der Kauf von SentryOne, da es im Vergleich zu anderen überzeugend ist und viele Informationen liefert, die zur Identifizierung unserer Schwachstellen erforderlich sind.

Abschließend würde ich jedem raten, der nach Antworten auf ähnliche Fragen sucht, nicht zu versuchen, Dinge selbst zu erstellen, solange Sie keine kleine und grundsätzlich gesunde Umgebung haben. Wenn Sie einige Systeme und viele Probleme haben, sollten Sie sich sofort für eine professionelle Lösung entscheiden und die Unterstützung des Anbieters für Ihre Probleme nutzen, anstatt viel Zeit und Geld zu investieren, um etwas weniger Nützliches zu schaffen. Diese Route war jedoch immer noch sehr interessant und hat mich dazu gebracht, viel zu lernen, was ich nicht missen möchte.

Ich hoffe, Sie finden dies nützlich, wenn Sie auf diesen Fragenthread gestoßen sind.

BEARBEITEN 20. April 2017: Brent Ozar hat kürzlich den folgenden Artikel auf Facebook veröffentlicht, der eine ähnliche Vorgehensweise des SQL Tiger-Teams darstellt: https://blogs.msdn.microsoft.com/sql_server_team/sql-server-performance-baselining -Berichte-entfesselt-für-Unternehmensüberwachung /


2
Ich bin froh, dass Sie zu dem gleichen Schluss gekommen sind, und Sie haben genau Recht. Ihre Zeit wird viel besser für die Behebung Ihrer tatsächlichen Probleme verwendet, als das Rad neu zu erfinden. Ihr Rad scheint jedoch besonders glänzend: D
ConstantineK

6

Hier sind einige gute Artikel mit einigen praktischen Beispielen, die Sie hier finden können:

Erkennen von SQL Server-Leistungsproblemen mithilfe von Baselines - Teil 1 - Einführung

Erkennen von SQL Server-Leistungsproblemen mithilfe von Baselines - Teil 2 - Sammeln von Metriken und Berichten

So erkennen Sie SQL Server-Leistungsprobleme mithilfe von Baselines - Teil 3

Während Teil 1 Ihnen einige grundlegende Kenntnisse über die Grundlinie vermittelt, finden Sie in Teil 2 Informationen dazu, wie Sie dies selbst mit der "Poor Man" -Methode tun können (kostenlos und gut zum Lernen).

Teil 3 enthält einige Beispiele zum Einrichten von Baselines und zur Verwendung von Baselines bei der Fehlerbehebung bei einigen Problemen über ApexSQL Monitor


4

Als ein relativ neu geprägter DBA unter der Waffe habe ich die Palette der kostenlosen Tools durchlaufen und einige Experimente im kostenpflichtigen Bereich (DPA, SQL Sentry und Foglight) durchgeführt. Dies hängt wirklich davon ab, wofür Sie das Tool benötigen.

Nach meiner Erfahrung war das Wichtigste nicht nur die Kommunikation der Leistungsbasislinien (das Management kümmerte sich nicht darum, es sei denn, es gab jemanden, den man anschreien konnte), sondern es wurde etwas in einem einfach zu konsumierenden Format erstellt, das die Prioritäten klar machte und in der Lage war, die Leistung zu ermitteln Probleme in der Produktion.

Sie können Ihre Fähigkeiten absolut verbessern, indem Sie den kostenlosen Weg gehen, und die Tools für SQL Server sind großartig.

Mit diesen und einigen zusätzlichen Datenbanken / Tabellen und Jobs und Zeit können Sie ein grundlegendes Überwachungssystem aufbauen (aber es ist nicht schön). Dies sind Tools für DBAs. Wenn Sie nicht gut in BI-Sachen sind, werden Sie Schwierigkeiten haben, Zeit zu finden, um nützliche geschäftsfreundliche Sachen daraus zu produzieren, obwohl die Ozar sp_blitz-App ziemlich verdammt cool ist.

Nachdem ich ungefähr ein Jahr damit verbracht hatte, die kostenlose Sache zu erledigen und viele Probleme zu lösen (aber nicht viel zu kaufen), konnte ich nach einem großen Problem klarstellen, dass Perf-Überwachungssoftware Priorität hat und wir sie kaufen wollten Komm zur Hölle oder zum Hochwasser.

Nachdem ich die zuvor erwähnten Clients vorgeführt hatte, entschied ich mich für DPA, da das Management die Ergebnisse leicht nutzen konnte, obwohl ich definitiv Client-Lizenzen für SQL Sentry Plan Explorer Pro habe (1000% das Geld wert) und die Server-Version sehr gern benutzte, sie einfach nicht nutzte in der gleichen Weise.

Ich habe auch versucht, SQLNexus irgendwann zum Laufen zu bringen, aber am Ende habe ich viel gearbeitet, als ich interessiert war. Es könnte Ihren Anforderungen entsprechen.


1

Um schnell eine Leistungsbasis zu erstellen, um einige Zahlen zu den verschiedenen produktiven SQL-Instanzen zu erhalten, würde ich eine kostenlose Testversion eines Drittanbieter-Tools wie Solarwinds Database Performance Analyzer verwenden.



0

Ich folgte einem ähnlichen Weg wie einige der oben genannten Poster, stieß dann aber auf etwas, das von Microsoft erstellt wurde.

Es wurde oben kurz erwähnt, aber es wurde kein expliziter Link angegeben. Das Microsoft Tiger Team hat die 'Tiger Toolbix' entwickelt, die hier heruntergeladen werden kann: https://github.com/Microsoft/tigertoolbox

Ein Youtube-Video erklärt die Tiger Toolbox: https://www.youtube.com/watch?v=bx_NGNEz94k

Es gibt auch https://github.com/sqlcollaborative/dbareports

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.