Mithilfe von Abfrageprofilen finden Sie heraus, was in der Blackbox der SQL Server-Leistung vor sich geht.
Benutzer haben es leicht. DBAs nicht.
Denken Sie an die einfachen Optionen, die Benutzer haben, wenn eine Datenbankanwendung schlecht läuft:
- Geh Kaffee holen und warte.
- Den Computer beleidigen.
- Beschwere dich bei anderen Nutzern.
- Senden Sie ein Trouble-Ticket.
Ist das nicht das Leben von Riley im Vergleich zu den Optionen, die Sie als DBA haben?
- Suchen Sie nach blockierten Sitzungen.
- Puffer-Cache-Trefferquoten prüfen.
- Maximale E/A-Wartezeit messen.
- Untersuchen Sie die Lebenserwartung der Seite.
- Prüfen Sie, ob Indizes fehlen oder neu erstellt werden müssen.
- Suchen Sie nach Sperren/Deadlocks.
- CPU-Auslastung prüfen.
- Überprüfen Sie das Anwendungsprotokoll auf Meldungen über unzureichenden Arbeitsspeicher.
- Stellen Sie sicher, dass die tempdb-Datenbank richtig konfiguriert ist.
Es könnte eines dieser Softwareprobleme sein, und sie führen Sie normalerweise zur Lösung, indem Sie eine Abfrage optimieren oder Ihre Konfiguration ändern. Oder es könnte ein Hardwareproblem sein, und die Lösung besteht darin, mehr Speicher oder Rechenleistung zu kaufen.
Da es bei Datenbankanwendungen hauptsächlich darum geht, viele SQL-Abfragen auszuführen, haben Leistungsprobleme in SQL Server viele versteckte Stellen. Wenn Sie ein Benutzer sind, können Sie sagen:„Oh, nun, das Problem muss irgendwo in dieser Blackbox sein. Nicht mein Job.“
Aber als DBA haben Sie diesen Luxus nicht. Du musst die Blackbox öffnen, hineinklettern, das Chaos finden und es reparieren.
Abfrageprofilerstellung 101 mit Leistungsüberwachung des SQL-Servers
Im Allgemeinen besteht Ihr Ziel bei der Überwachung der Serverleistung darin, die Leistung Ihrer SQL-Abfragen im Laufe der Zeit und das Wachstum des Transaktionsvolumens auf Ihrem SQL Server im Auge zu behalten. Sie können dieses Ziel auf verschiedene Weise erreichen.
Sehen Sie sich den Erklärungsplan an
Der Explain-Plan zeigt, was SQL Server bei der Ausführung der Abfrage tun wird, einschließlich der Tabellen, die es verbindet, des Typs des Joins, den es durchführt, der Anzahl der Zeilen, die es berührt, und der Indizes, die es verwendet.
Was kann Ihnen der Erklärplan sagen? Zum einen können Sie sehen, wie Sie die Abfrage selbst verbessern können, indem Sie beispielsweise einen NESTED LOOP JOIN entfernen, den einer der Datenbankentwickler für eine riesige Tabelle hinzugefügt hat. Oder Sie könnten anhand des EXPLAIN-Plans herausfinden, dass Sie einen Index für eine bestimmte Tabelle erstellen oder neu erstellen müssen.
Der Explain-Plan ist ein guter Ausgangspunkt für die Erstellung von Abfrageprofilen, noch bevor Sie die verdächtigen Abfragen tatsächlich ausführen.
Führen Sie die Abfrage aus
Um die Abfragen auszuführen und zu sehen, welche Ressourcen sie zur Laufzeit betreffen, erstellen Sie zunächst Ablaufverfolgungen, um Ereignisse zu markieren, während sie auftreten. Mit Traces können Sie Daten erfassen und auf auftretende Fehler achten. Ein Profiling-Tool speichert die von den Traces erfassten Daten und zeigt sie so an, dass Sie problematische Abfragen leichter finden und beheben können.
Die Kombination aus Traces und dem Profiling-Tool kann viele Fragen beantworten:
- Welche Abfragen verbrauchen den meisten Speicher?
- Wie lange dauert die Ausführung jeder Abfrage?
- Welche Sperren setzt SQL Server für jede Abfrage?
- Welche Abfragen kann SQL Server aus dem Puffercache ausführen? Wie oft muss es auf die Festplatte gehen?
- Wie viele Zeilen untersucht jede Abfrage?
- Wie viele Anfragen pro Minute erfüllt die Datenbank?
Sie erhalten den genauesten Lesevorgang, indem Sie die Abfrage in Ihren Produktionsdatenbanken ausführen, aber das kann auch die Verarbeitung durch Ihre realen Kunden und Benutzer verlangsamen. Wenn möglich, testen Sie zuerst in Entwicklungs- oder Testinstanzen, in denen Sie nicht mit Ihrer Produktionsinstanz um Arbeitsspeicher oder E/A konkurrieren.
Apropos Kunden und Benutzer:Ihr Ziel bei der Erstellung von Abfrageprofilen ist es, sie glücklich zu machen. Die Profilerstellung kann leicht Dutzende von Problemen in Ihrer Datenbank aufdecken, aber der Grund, warum Sie die Blackbox geöffnet haben, ist, die schmerzhaftesten Probleme zu lösen. Nachdem Sie Daten von ein oder zwei Tagen normaler Nutzung erfasst haben, können Sie die Leistungsprobleme des SQL-Servers finden, die Ihren Benutzern die meisten Probleme bereiten. Möglicherweise verlangsamt ein fehlender Index das Abrufen von Datensätzen oder zu viele Indizes verlangsamen das Einfügen von Datensätzen und Datenbankaktualisierungen. Vielleicht sammelt eine häufig verwendete Abfrage Informationen, die niemanden mehr interessieren.
Verwenden Sie Profiling-Tools mit Bedacht
Profiling-Tools ersparen Ihnen den langwierigen Prozess der manuellen Einrichtung jedes Ereignisses, Filters und Prozeduraufrufs für alles, was Sie nachverfolgen möchten. Bei so vielen Vorgängen in der Blackbox der SQL Server-Leistung können Sie leicht zu viele Daten erfassen, um den Wald vor lauter Bäumen zu sehen.
Mit guten Tools können Sie sorgfältig auswählen, was Sie verfolgen, damit Sie beispielsweise nicht Hunderte von Lock:Acquired-Ereignissen erfassen und Ihre Anzeige unnötig damit füllen. Wenn Sie jedoch ein häufig auftretendes Ereignis untersuchen müssen, verwenden Sie Filter wie Anwendungsname oder Tabellenname.
Anstatt Ablaufverfolgungsdaten in eine Tabelle in einer Datenbank zu schreiben, sollten Sie sie in einer eigenen, separaten Datei speichern. Dadurch wird verhindert, dass der Overhead der Ablaufverfolgung zu einer Belastung für SQL Server wird und möglicherweise die Ergebnisse verzerrt. Wenn Ihr Profilerstellungstool Daten bevorzugt, die aus einer Tabelle gezogen werden, können Sie die Daten später aus der Datei in die Tabelle importieren.
Verbessern Sie Ihre SQL Server-Leistungsüberwachung mit Abfrageprofilen
Ihre Benutzer bleiben der Blackbox der SQL Server-Leistung fern, aber Sie müssen es nicht. Mit der Abfrageprofilerstellung öffnen Sie die Box, finden heraus, was darin vor sich geht, und beginnen mit der Fehlerbehebung.
Aber warten Sie nicht, bis Sie Probleme haben, es zu benutzen. Die Erstellung von Abfrageprofilen gleicht eher einer Überprüfung des Öls als einem Austausch des Motors. Es hilft bei den üblichen DBA-Pflichten, veraltete Abfragen zu aktualisieren und das Design zu modifizieren, damit Ihre Datenbanken mit den Änderungen im Unternehmen Schritt halten.