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

Verwaltung von SQL Server-Indizes mit Index Manager for SQL Server

SQL Server-Indexübersicht

Wenn es um die Leistungsoptimierung und Abfrageverbesserung von SQL Server geht, ist als erstes der SQL Server-Index zu berücksichtigen. Es dient dazu, das Lesen von Daten aus zugrunde liegenden Tabellen zu beschleunigen, indem es einen schnellen Zugriff auf die angeforderten Zeilen bietet. Daher müssen nicht alle Datensätze der Tabelle gescannt werden.

Der SQL Server-Index bietet diese schnellen Suchfunktionen aufgrund der B-Tree-Struktur des Indexes. Diese Struktur ermöglicht es, anhand des Indexschlüssels schnell durch die Tabellenzeilen zu navigieren und die angeforderten Datensätze sofort abzurufen. Es muss nicht die ganze Tabelle gelesen werden.

Typen der SQL Server-Indizes

Unter den Haupttypen achten wir auf geclusterte und nicht geclusterte Indizes.

Der Clustered-Index sortiert die eigentlichen Daten in den Datenseiten gemäß den Schlüsselwerten des gruppierten Indexes. Es speichert die Daten auf der „Blatt“-Ebene des Index und stellt so die Möglichkeit sicher, nur einen Clustered-Index für jede Tabelle zu erstellen. Der gruppierte Index wird automatisch erstellt, wenn eine Primärschlüssel-Einschränkung in der Heap-Tabelle erscheint.

Der nicht gruppierte Index enthält den Indexschlüsselwert und einen Zeiger auf die restlichen Zeilenspalten in der Haupttabelle. Es ist die „Blatt“-Ebene des Index, mit der Möglichkeit, bis zu 999 nicht geclusterte Indizes für jede Tabelle zu erstellen.

Wenn für Ihre Tabelle kein Clustered-Index erstellt wurde, wird die Tabelle „Heap-Tabelle“ genannt. Eine solche Tabelle hat keine Kriterien, um die Datenreihenfolge innerhalb der Seiten und die Sortierung und Verknüpfung der Seiten festzulegen.

Wenn ein Clustered-Index für diese Tabelle erstellt wird, nennen wir die sortierte Tabelle eine Clustered-Tabelle.

Es gibt auch andere Arten von Indizes, die von SQL Server bereitgestellt werden:

  • Der Unique-Index erzwingt die Eindeutigkeit der Spaltenwerte;
  • Der abdeckende Index enthält alle von der Abfrage angeforderten Spalten;
  • Der zusammengesetzte Index enthält mehrere Spalten im Indexschlüssel;
  • Andere besondere Indextypen sind XML-, Spatial- und Columnstore-Indizes.

Der Vorteil des SQL Server-Index besteht darin, dass er die Leistung der Abfragen verbessert. Es funktioniert jedoch, wenn nur der Index korrekt ist. Wenn Sie es falsch entwerfen, wirkt sich dies negativ auf die Leistung der Abfragen aus und verbraucht die SQL Server-Ressourcen zum Speichern und Verwalten nutzloser Indizes.

Die Auswahl des besten Index, der alle Probleme behebt, ist keine leichte Aufgabe. Das Hinzufügen eines neuen Indexes kann den Datenabrufprozess beschleunigen, verlangsamt jedoch die Datenänderungsprozesse. Jede Änderung, die an der zugrunde liegenden Tabelle vorgenommen wird, wird direkt in alle zugehörigen Indizes übernommen, um die Daten konsistent zu halten.

Aus diesem Grund sollten Sie die Auswirkungen des neuen Index untersuchen und testen, bevor Sie ihn in der Produktionsumgebung erstellen. Es ist auch notwendig, seine Auswirkungen und Nutzung nach der Bereitstellung in der Produktionsumgebung zu überwachen.

Bei der Entwicklung eines neuen SQL Server-Index zu berücksichtigende Faktoren

Der erste Faktor ist der Datenbank-Workload-Typ . Angenommen, wir haben es mit einer OLTP-Workload mit einer großen Anzahl von Schreibvorgängen zu tun. Es erfordert die geringstmögliche Anzahl von Indizes. Ein anderer Fall ist eine OLAP-Arbeitslast mit vielen Lesevorgängen – es werden so viele Indizes wie möglich benötigt, um den Datenabruf zu beschleunigen.

Außerdem müssen Sie sich die Tabellengröße ansehen . SQL Server Engine zieht es vor, die zugrunde liegende Tabelle direkt zu scannen, anstatt Zeit und Ressourcen für die Auswahl des besten Indexes für den Datenabruf aus dieser kleinen Tabelle zu verschwenden.

Sobald Sie sich entschieden haben, einen Index für diese Tabelle zu erstellen, müssen Sie den Indextyp für Ihre Abfrage identifizieren . Dort geben Sie die dem Indexschlüssel hinzugefügten Spalten an. Die Grundlagen sind der Spaltendatentyp und die Position in den Abfrageprädikaten und Join-Bedingungen.

Diese Faktoren sollten die beste Datenabrufleistung in der richtigen Reihenfolge garantieren und den Index so kurz und einfach wie möglich halten.

Ein weiterer zu berücksichtigender Faktor beim Entwerfen eines neuen Indexes ist der Indexspeicher . Es wird empfohlen, nicht gruppierte Indizes auf einer separaten Dateigruppe und einem separaten Laufwerk zu erstellen. Auf diese Weise isolieren Sie die E/A-Operationen, die in den Indexdatenseiten ausgeführt werden, von den Datenbankdatendateien.

Erwägen Sie, den Index festzulegen FÜLLFAKTOR , die den Prozentsatz des Platzes auf jeder mit Daten gefüllten Seite auf Blattebene bestimmt (der Wert weicht vom Standardwert 0 oder 100 Prozent ab). Das Ziel besteht darin, auf jeder Indexdatenseite Platz für die neu eingefügten oder aktualisierten Datensätze zu lassen. Es minimiert auch das Auftreten von Seitenteilungen, die zu Indexfragmentierungsproblemen führen könnten.

Indexverwaltung

Die Rolle des Datenbankadministrators beim Verbessern der Leistung von Abfragen mit SQL Server-Indizes ist nicht auf das Erstellen des Index beschränkt. Sie sollten die Indexnutzung proaktiv überwachen, um ihre Qualität zu ermitteln. Außerdem müssen wir den Index regelmäßig warten, um die Fragmentierungsprobleme zu beheben.

SQL Server Management Studio mit seiner robusten Berichtsfunktion stellt den Datenbankadministratoren die nützlichsten Statistikdaten zur Verfügung. Einer dieser integrierten Berichte ist Statistiken zur Indexnutzung :

Der Indexnutzungsstatistikbericht beschreibt, wie Datenbankindizes in Form von:

verwendet werden
  • Sucht :Die Häufigkeit, mit der der Index von der SQL-Engine verwendet wird, um eine bestimmte Zeile zu finden.
  • Scans :die Häufigkeit, mit der die Indexblattseiten von der SQL-Engine gescannt werden.
  • Nachschlagen :Die Häufigkeit, mit der ein Non-Clustered-Index als Clustered-Index verwendet wurde, um den Rest der Spalten abzurufen, die nicht im Non-Clustered-Index aufgeführt sind.
  • Aktualisierungen :wie oft die Indexdaten geändert werden.

Beachten Sie, dass der Hauptzweck der Indexerstellung darin besteht, eine Indexsuchoperation durchzuführen, wie unten gezeigt:

Der vorherige Bericht hilft erheblich bei der Angabe, ob der SQL Server diese Indizes nutzt, um den Datenabrufprozess zu beschleunigen oder nicht. Wenn sich herausstellt, dass ein bestimmter Index nicht so funktioniert, wie er sollte, löschen Sie ihn und ersetzen Sie ihn durch einen besseren.

Der zweite vom SSMS bereitgestellte Bericht ist die Index Physical Statistics . Es gibt die statistischen Informationen über den Prozentsatz der Indexfragmentierung pro Indexpartition mit der Anzahl der Seiten in jeder Indexpartition zurück.

Außerdem wird empfohlen, wie Sie die Indexfragmentierungsprobleme beheben können, indem Sie diesen Index entsprechend dem Fragmentierungsprozentsatz neu erstellen oder neu organisieren, wie unten gezeigt:

Um die Empfehlungen des Berichts anzuwenden, können Sie den Index-Defragmentierungsbefehl für jeden Index ausführen. Oder Sie können mit SSMS einen Wartungsplan erstellen, um den Index optimal zu verwalten.

dbForge-Index-Manager

dbForge Index Manager ist ein SSMS-Add-In, das dazu dient, die Fragmentierungsprobleme von SQL Server-Indizes zu erkennen und zu beheben.

Es ist auch ein zentralisiertes Tool, das die Möglichkeit bietet, den Prozentsatz der Indexfragmentierung über die Datenbanken hinweg zu erkennen. Sie können diese Probleme beheben, indem Sie eine Indexneuerstellung durchführen. Eine andere Möglichkeit besteht darin, Vorgänge basierend auf dem Fragmentierungsgrad dieses Index neu zu organisieren. Neben anderen Optionen gibt es die Generierung von T-SQL-Skripten für die Ausführung indexbezogener Befehle, den Export der Ergebnisse der Indexanalyse zur späteren Bezugnahme und die Verwendung der Befehlszeilenschnittstelle zur Automatisierung der Indexwartungsaufgaben.

dbForge Index Manager ist auf der Devart-Downloadseite verfügbar. Sie können es mit einem unkomplizierten Installationsassistenten auf Ihrem Computer installieren. Nach erfolgreicher Installation ist dieses Add-In einsatzbereit.

Um es innerhalb des SSMS zu verwenden, klicken Sie mit der rechten Maustaste auf die Datenbank und wählen Sie Indexfragmentierung verwalten aus der Index-Manager-Liste:

Im Index-Manager-Fenster können Sie den Datenbanknamen filtern, der Sie interessiert.

Klicken Sie auf Erneut analysieren um die Indexfragmentierungsprüfung für die ausgewählte Datenbank durchzuführen. Es zeigt automatisch die Indexfragmentierungsstatistik für alle Indizes an, die während dieses Prozesses unter der ausgewählten Datenbank erstellt wurden.

Das Index-Manager-Tool empfiehlt auch die Maßnahmen zur Behebung der Indexfragmentierungsprobleme, basierend auf dem Fragmentierungsprozentsatz:

Das Überprüfen der Indizes im Abschnitt Erforderliche Aktionen im vorherigen Fenster ermöglicht das Exportieren der Aktionsliste als CSV-Bericht. Sie können die vorgeschlagene Lösung durchführen, indem Sie problematische Indizes direkt von dieser Seite aus reorganisieren oder neu erstellen oder ein Skript generieren, um dies später zu tun:

Die Korrektur der Indexfragmentierung in unserem Szenario sieht wie folgt aus:

Wenn Sie das vorherige Skript ausführen oder auf Fix klicken Option und dann Erneut analysieren Als Ergebnis sehen Sie, dass das Fragmentierungsproblem direkt behoben wurde:

Auf diese Weise nutzen wir den dbForge Index Manager, um die Indexfragmentierungsprobleme zu analysieren und zu identifizieren und sie dann direkt von derselben Stelle aus zu melden oder zu beheben.

Nützliches Tool

dbForge Index Manager bringt intelligentes Indexfixing und Indexfragmentierung direkt in SSMS. Mit dem Tool können Sie schnell Statistiken zur Indexfragmentierung sammeln und Datenbanken erkennen, die gewartet werden müssen. Sie können SQL Server-Indizes sofort im visuellen Modus neu erstellen und neu organisieren oder SQL-Skripts für die zukünftige Verwendung generieren. dbForge Index Manager für SQL Server wird Ihre Leistung ohne großen Aufwand erheblich steigern.