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

Verbessern Sie die Leistungsoptimierung von SQL Server mit diesen 3 Tipps

Wie jeder, der Datenbanken verwaltet, nur allzu gut weiß, ist die SQL Server-Leistungsoptimierung eine entscheidende Funktion, um eine optimale Leistung sicherzustellen. Da die Leistung von verschiedenen Faktoren wie Arbeitsspeicher, Konfiguration, Abfragedesign und Ressourcennutzung abhängt, ist es keine leichte Aufgabe, die Hauptursache für Leistungseinbußen zu isolieren.

Anstatt auf das Auftreten von Leistungsproblemen zu warten, stellt die proaktive Optimierung von SQL Server sicher, dass Ihre SQL-Anweisungen so effizient wie möglich ausgeführt werden, indem SQL dabei unterstützt wird, den schnellsten Weg nach innen und außen zu finden, um Ihre Abfrageergebnisse zu liefern.

Wenn Sie mit schleppender Leistung zu kämpfen haben – oder nicht einfach darauf warten, dass Probleme auftreten –, finden Sie hier drei Schlüsselbereiche, auf die Sie Ihre SQL Server-Leistungsoptimierung konzentrieren sollten, um eine optimale Leistung und gesündere Systeme zu erreichen.

Tipp Nr. 1:Optimieren Sie Ihre TempDB

Eine falsch konfigurierte TempDB ist ein häufiger Übeltäter, wenn es um Leistungseinbußen geht. Wenn Sie Ihre TempDB häufig füllen, ist es an der Zeit, einen Blick darauf zu werfen, was geändert werden muss.

Überprüfen Sie zuerst die TempDB-Größe. Es gibt keine feste Regel, wie groß es sein sollte, aber eine gute Faustregel ist, TempDB bei 25 Prozent Ihrer größten Datenbank oder der gleichen Größe wie Ihr größter Index zu halten. Dies verhindert, dass TempDB während des Neuaufbaus erhöht werden muss.

Bei TempDB gilt:Je schneller das Laufwerk, desto besser. Wenn TempDB auf einem langsamen Laufwerk oder demselben Laufwerk wie das Betriebssystem platziert wird, treten mit Sicherheit Probleme mit der Datenbankleistung auf. Bewahren Sie TempDB nach Möglichkeit auf einer dedizierten lokalen SSD auf. Wenn dies nicht möglich ist, ist die nächstbeste Option, es auf einem eigenen dedizierten Volume mit ausreichend vorab zugewiesenem Speicherplatz zu speichern.

Es ist auch wichtig, Daten und Protokolldateien getrennt zu halten und einen großen festen Wert für die automatische Vergrößerung von TempDB festzulegen. Andernfalls werden Sie jedes Mal, wenn sich TempDB füllt, von unnötigem Overhead heimgesucht.

Die Steuerung der Anzahl der TempDB-Datendateien trägt zur TempDB-Optimierung bei. Aber die große Frage ist, wie viele TempDB-Datendateien benötigen Sie? Idealerweise haben Sie eine TempDB-Datendatei für jede logische CPU, aber insgesamt nicht mehr als acht (mit einigen Ausnahmen). Wenn Sie beispielsweise vier logische CPUs haben, benötigen Sie vier TempDB-Datendateien. Wenn Sie 12 logische CPUs haben, können Sie acht TempDB-Datendateien haben.

Tipp Nr. 2:Leistungsengpässe vermeiden

Es gibt drei Haupttypen von SQL Server-Leistungsengpässen, die zu einer schlechten Leistung beitragen:CPU, Arbeitsspeicher und E/A. Die Ursachen, Symptome und Diagnosen unterscheiden sich je nach Art des Engpasses, daher finden Sie hier auf einen Blick, worauf Sie achten sollten:

CPU-Engpässe

Ursache: Unzureichende Hardwareressourcen

Symptome: Konstant hohe Prozessorauslastung

Zu überwachende Messwerte:  % Prozessorzeit, Batch-Anforderungen/Sek., SQL-Kompilierungen/Sek. und SQL-Neukompilierungen/Sek.

Speicherengpässe

Ursache:  Einschränkungen des verfügbaren Arbeitsspeichers und Arbeitsspeicherbelastung durch SQL Server-, System- oder andere Anwendungsaktivitäten

Symptome:  Langsame Reaktion der Anwendung, Verlangsamung des Gesamtsystems und Anwendungsabstürze

Zu überwachende Messwerte:  Verfügbarer Arbeitsspeicher (KB), Gesamtspeicher des Servers (KB), Arbeitsspeicher des Zielservers (KB), Seiten/Sek., Checkpoint-Seiten/Sek., Lazy Writes/Sek. und Puffer-Cache-Trefferquote

E/A-Engpässe

Ursache:  Übermäßiges Lesen und Schreiben von Datenbankseiten von und auf die Festplatte

Symptome: Lange Antwortzeiten, Anwendungsverlangsamung und Zeitüberschreitungen bei Aufgaben

Zu überwachende Messwerte:  Durchschnittliche Festplattenwarteschlangenlänge, durchschnittliche Festplattensek./Lesevorgänge, durchschnittliche Festplattensek./Schreibvorgänge, %Festplattenzeit, durchschnittliche Festplattenlesevorgänge/Sek. und durchschnittliche Festplattenschreibvorgänge/Sek.

Tipp Nr. 3:Stellen Sie sicher, dass Indizes richtig gestaltet sind

Indizes sind eine großartige Möglichkeit, bestimmte SQL Server-Vorgänge zu beschleunigen, aber nur, wenn sie gut konzipiert sind. Schlecht gestaltete Indizes haben den gegenteiligen Effekt und sind ein sicherer Weg, die Leistung Ihres SQL Servers zu beeinträchtigen.

Durch die richtige Einrichtung dieser vier Bereiche können Sie sicherstellen, dass Indexe richtig gestaltet sind, und die Leistung von SQL Server unterstützen, anstatt sie zu beeinträchtigen.

Tabellengröße

Nicht jede Tabelle ist ein guter Kandidat für die Indizierung. Wenn eine Tabelle zu klein ist, ist es für SQL Server tatsächlich viel effizienter, die gesamte Tabelle zu durchsuchen, anstatt Indizes durchsuchen zu müssen. Bei großen Tabellen gilt natürlich das Gegenteil, daher müssen Sie bei der Entscheidung, welche Tabellen von Indizes profitieren würden, den potenziellen Overhead abwägen.

Indextypen

Technisch gesehen kann jede Datenbanktabelle einen geclusterten Index und unendlich viele nicht geclusterte Indizes haben, aber Sie wissen, was man über „nur weil man etwas tun kann“ sagt…

Zu viele nicht gruppierte Indizes können Einfüge- und Aktualisierungsvorgänge erheblich verlangsamen, daher ist es eine weitaus bessere Designentscheidung, sich an einen gruppierten Index und die minimale Anzahl absolut notwendiger nicht gruppierter Indizes zu halten.

Indexspeicherung

Während der Entwurfsphase ist die Auswahl der richtigen Speicherkriterien für Indizes entscheidend für die E/A-Leistung. Partitionierte gruppierte Indizes und nicht gruppierte Indizes können in derselben Dateigruppe wie die Haupttabelle oder in einer anderen Dateigruppe gespeichert werden. Das Speichern eines nicht gruppierten Indexes in einer Dateigruppe, die sich auf einem anderen Laufwerk befindet, kann die Leistung von Abfragen verbessern, die es verwenden, da es nicht durch das gleichzeitige Lesen der Daten und SQL-Indexseiten beeinträchtigt wird, die auf verschiedenen Laufwerken stattfinden.

FÜLLFAKTOR

FILLFACTOR gibt den Prozentsatz des Platzes an, der auf jeder Datenseite gefüllt wird, wenn ein Index erstellt wird. FILLFACTOR-Werte können von 0 Prozent (keine Datenseite ist gefüllt) bis 100 Prozent (die Datenseite ist vollständig gefüllt) reichen. Wählen Sie beim Entwerfen Ihres Index einen FILLFACTOR-Wert aus, der die Seitennutzung optimiert und gleichzeitig das Risiko einer übermäßigen Indexfragmentierung minimiert.

Die SQL Server-Leistungsoptimierung zu einem Teil Ihrer Standardroutine zu machen, ist eine hervorragende Möglichkeit, um sicherzustellen, dass Ihre Datenbanken mit Spitzenleistung laufen. Wenn Sie diese drei einfachen Schritte in Ihre regulären SQL Server-Wartungspläne integrieren, werden Geschwindigkeit und Leistung für Ihre Benutzer spürbar verbessert.