Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server-Leistungsmetriken, um dem Spiel immer einen Schritt voraus zu sein

„Doc, ich mache mir Sorgen um meine SQL Server-Leistung.“

So etwas hört man von den meisten Patienten nicht. Aber andererseits wurde ich als bezahlter Profi dazu ausgebildet, mit allem fertig zu werden – sogar mit den harten Zeiten als Datenbankadministrator.

"Wirklich? Lassen Sie uns das untersuchen, ja?“

„Sicher, Doktor. Ich meine, manchmal fühlt es sich so überwältigend an. Ich dachte, alles würde sich von selbst regeln, sobald ich mich dazu verpflichtet habe. Aber bevor ich es wusste, hatte ich Leistungsprobleme in SQL Server 2012, dann 2014, dann 2017. Ich möchte nicht einmal an SQL Server 2019 denken.“

"Ich verstehe. Nun, eine gute Beziehung zu SQL Server ergibt sich nicht von alleine. Du musst daran arbeiten. Sagen Sie mir, haben Sie an Ihren Techniken zur Leistungsoptimierung von SQL Server gearbeitet?“

„Ähm, nein, Doc. Ich kenne keine dieser Techniken wirklich.“

"Mach dir keine Sorgen. An denen können wir arbeiten. Ihr SQL Server fühlt sich wahrscheinlich vernachlässigt. Sie müssen es im Auge behalten, um sicherzustellen, dass Sie dem Spiel voraus sind. Das erfordert SQL Server-Überwachung.“

"Überwachung? Wie machst du das?“

„Sie müssen SQL Server zeigen, dass Sie sich interessieren. Sie müssen auf bestimmte Metriken achten. Daran können wir auch arbeiten.“

„Okay, Doktor. Was auch immer du sagst. Ich bin bereit, an dieser Stelle alles zu versuchen. Die Dinge könnten nicht viel schlimmer werden, als sie jetzt sind.“

"Gut dann. Lass uns anfangen."

SQL Server-Leistungsmetriken – Viele bewegliche Teile

Der Patient hatte Recht:Die Überwachung Ihrer SQL Server-Leistung kann sich überwältigend anfühlen. Sie können nicht aufhören, darauf zu achten, wenn es einmal läuft. Du musst ihm weiterhin zeigen, dass es dir wichtig ist.

SQL Server hat viele bewegliche Teile, die ständig Metriken generieren. Zu wissen, welche zu beobachten sind, und sich dann an Ihrem arbeitsreichen Tag tatsächlich die Zeit zu nehmen, sie zu überwachen, kann für einen DBA eine Menge Arbeit bedeuten.

Also ging ich mit dem Patienten einige der Hauptbereiche der SQL Server-Leistungskennzahlen durch.

Indizes

Einer der ersten Orte, an denen Sie nachsehen sollten, wenn Sie Leistungsprobleme mit SQL Server haben, sind die Indizes. Ihre Daten wachsen ständig, also wachsen auch Ihre Indizes ständig. Sie unterliegen jedoch Bedingungen wie Fragmentierung und Seitenteilungen, die die Antwort auf Anfragen verlangsamen können.

Was passiert Tag für Tag in einer Datenbank? Benutzer erstellen, bearbeiten und löschen Datensätze. Die Indizes halten mit, wo sich alle Teile der Datensätze befinden, aber im Laufe der Zeit beeinträchtigt die Indexfragmentierung die Leistung.

Dann gibt es den Indexfüllfaktor, einen Parameter, den Sie in SQL Server konfigurieren können, um die Anzahl der Seitenteilungen zu steuern und die Abfrageeffizienz zu erhöhen. Aber das Gleichgewicht zwischen mehr und weniger Seitenteilungen wirkt sich auf andere Weise auf die Leistung aus.

Messwerte im Füllfaktor ansehen , E/A und Fragmentierung ist eine gute Möglichkeit, den Zustand des SQL Server-Index am Puls der Zeit zu halten.

Puffer-Cache

Machen wir es uns einfach:Festplatte, langsam; Puffer-Cache, schnell. Der Puffercache ist eine In-Memory-Kopie kürzlich verwendeter Datenbankseiten. Wenn SQL Server dort nicht findet, wonach es sucht, muss es auf die Festplatte gehen, was die Leistung verlangsamt.

Mit SQL Server können Sie die Menge des Systemspeichers angeben, der dem Puffercache zugewiesen werden soll, aber Sie tauschen dies gegen den für andere Aufgaben verbleibenden Speicher ein. Ihr Ziel ist es, so viel wie möglich zuzuweisen, ohne die Leistung von SQL Server in anderen Bereichen zu beeinträchtigen.

Ebenfalls wichtig ist die Seitenlebenserwartung, die Zeitspanne, die eine Seite mit Informationen aus der Datenbank im Puffer verbringt, ohne dass erneut darauf zugegriffen wird. SQL Server entfernt ständig Seiten aus dem Puffercache, um Platz für kürzlich verwendete Seiten zu schaffen. Aber je weniger nützliche Seiten es dort findet, desto mehr muss es von der Platte lesen, was die Leistung verlangsamt.

Messwerte wie Lebenserwartung von Seiten und Verhältnis erfolgreicher Treffer im Puffercache helfen Ihnen, Entscheidungen über das seltenere Entfernen von Seiten oder das Erhöhen der Cache-Größe zu treffen.

T-SQL

SQL Server verwendet eine Abfragesprache namens T-SQL. Anstatt SQL-Anweisungen ad hoc auszuführen, versucht SQL Server, die Leistung zu verbessern, indem sie gestapelt, als Ausführungsplan kompiliert und zwischengespeichert werden. Es wird auch versucht, die Häufigkeit der Kompilierung zu minimieren und Ausführungspläne so oft wie möglich wiederzuverwenden. Wenn der Ausführungsplan nicht wiederverwendet werden kann – beispielsweise weil sich die Datenbank zu sehr geändert hat – wird der Plan neu kompiliert. Es empfiehlt sich, die Anzahl der Neukompilierungen von SQL-Anweisungen so gering wie möglich zu halten, da der Prozess große Mengen an CPU verbrauchen und die Leistung beeinträchtigen kann.

Die Notwendigkeit, zu kompilieren und erneut zu kompilieren, ist eine Funktion bewährter Codierungspraktiken, z. B. der Verwendung gespeicherter Prozeduren und der Parametrisierung von Abfragen. DBAs, die Metriken wie die Rate von SQL-Kompilierungen überwachen und SQL-Neukompilierungen kann SQL Server-Abfragehinweise ändern, um die Leistung zu verbessern.

Sperrt, wartet und blockiert Prozesse

Es ist frustrierend zu entdecken, dass jemand anderes zur gleichen Zeit etwas ändert wie Sie. Datenbanken sperren also automatisch Dinge wie Zeilen und Tabellen, um mehrere Köche von der Küche fernzuhalten. Der Kompromiss für diesen Schutz besteht natürlich darin, dass alle anderen Benutzer warten müssen, bis die Ressource entsperrt ist. Und es ist schwer sicherzustellen, dass die Sperrung nur auf der erforderlichen Ebene erfolgt.

Mit Metriken, die zeigen, wie oft und wie stark Sperren andere Vorgänge beeinträchtigen, können DBAs den Bedarf an mehr physischen Systemressourcen ermitteln, um Transaktionen schneller zu verarbeiten. Es kann auch sein, dass SQL Server auf einer unnötig niedrigen Ebene sperrt. Die Häufigkeit von Lock Waits und im weiteren Sinne die Anzahl der blockierten Prozesse kann helfen, Engpässe zu lokalisieren.

Beseitigen Sie Engpässe mit SQL-Leistungsoptimierung

„Mensch, Doc, Sie haben Recht mit all den beweglichen Teilen. Jetzt sehe ich, dass ich SQL Server nicht einfach installieren, einstellen und vergessen kann. Ich muss die Beziehung nähren. Aber das alles fühlt sich immer noch überwältigend an. Wie soll ich jemals so viele verschiedene Dinge in Ordnung halten und dem Spiel immer einen Schritt voraus sein?“

„Das ist der beste Teil. Es gibt Tools, die Ihnen bei der Leistung Ihres SQL Servers helfen können. Du musst es nicht alleine machen.“

"Wütend! Das ist beruhigend. Das wusste ich nicht.“

"Stimmt. Die Tools überwachen die Leistung Ihres SQL-Servers und melden all diese Metriken, damit Sie Ihre Optimierungstechniken anwenden und Engpässe beseitigen können.“

"Wirklich?"

"Sicher. Und wir können an diesen Rechten arbeiten – oh mein Gott, wir haben diese Woche keine Zeit mehr. Bitte vereinbaren Sie einen Termin mit meiner Rezeptionistin und wir holen Sie nächste Woche ab.“

„Junge, diese vier Stunden gingen schnell vorbei, Doc! Die Zeit vergeht wie im Flug, wenn Sie Performance-Probleme rund um Fragmentierung, Ressourcennutzung ausarbeiten und Puffer-Cache-Trefferquote , nicht wahr?“

„Ja, und ich bin mir sicher, dass all Ihre Leistungsprobleme der Vergangenheit angehören werden, sobald Sie offen über diese Probleme mit Ihrem SQL Server kommunizieren.“

Von unserer Sitzung ermutigt, ging der Patient. Das nächste Mal werden wir daran arbeiten, Leistungsengpässe von SQL Server zu überwachen. Ich werde darüber bloggen, also halte die Augen offen.

Vertrauen Sie mir in der Zwischenzeit. Ich bin ein bezahlter Profi und ich ermutige Sie, diese Dinge in Ihrer eigenen Beziehung zu Ihrer Datenbank auszuprobieren. Geben Sie Ihrem SQL Server das Gefühl, erwünscht zu sein. Achten Sie auf die Leistungskennzahlen.

Es ist nie zu spät, es zu versuchen.