Tipps zur Optimierung von SQL-Server-Indizes

Datenseiten

Bei der Erstellung eines Index legt der SQL-Server Datenseiten an. Diese dienen als Zeiger zum Auffinden der gesuchten Informationen. Sobald der Index erstellt ist, wird ein Füllfaktor definiert. Dieser legt fest, welcher prozentuale Anteil der Datenseiten für die Indexerstellung verwendet wird. Der freie Speicherplatz wird mit der Zeit durch Änderungen aufgebraucht. Nachteil dieser Aufteilung ist der Geschwindigkeitsverlust beim Indizieren und somit auch bei entsprechenden Abfragen – die Daten werden immer stärker fragmentiert. Der Füllfaktor wird zu Beginn mit der Erstellung des Index festgelegt und wird nicht dynamisch angepasst.

Um den Füllfaktor in den Datenseiten zu aktualisieren, kann man die Indizes neu erstellen und den Faktor zurücksetzen. Dies hat allerdings negative Auswirkungen auf gleichzeitige Datenbankaktivitäten, deshalb sollte man z.B. bei Produktionssystemen Vorsicht walten lassen. Mit den Befehlen DBCC INDEXDEFRAG und DBCC DBREINDEX kann man zusammengefasste und einzelne Indizes defragmentieren. INDEXDEFRAG kann im laufenden Betrieb durchgeführt werden, die Datenbank wird nicht blockiert. DBREINDEX hingegen erstellt einen neuen Index. In den meisten Fällen kann mit einer Index-Neuerstellung eine höhere Defragmentierung erreicht werden, dies geschieht allerdings auf Kosten der Datenverfügbarkeit. INDEXDEFRAG kann bei großen fragmentierten Indizes mehr Zeit in Anspruch nehmen, da es mit kleinen Blöcken arbeitet.

Der Füllfaktor

Nachdem man eine dieser beiden Aktionen durchgeführt hat, ist die Datenbank in der Lage auf effizientere Weise indexierte Daten auszugeben. Die Feineinstellung des Füllfaktors ist zwar nicht Thema dieses Artikels, sollte aber mit Rücksicht auf den Einsatzzweck der Tabelle vorgenommen werden.

Der SQL-Server wählt die in einer Abfrage verwendeten Indizes dynamisch aus. Für diese Auswahl kommen Statistiken über die Verwendung von Schlüsseln in jedem Index zum Einsatz. Somit wird festgelegt, welche Indizes für die Abfrage verwendet werden. Man muss berücksichtigen, dass diese Statistiken bei normaler Datenbankaktivität nicht immer aktuell sind (z.B. aufgrund parallelem Hinzufügen, Löschen oder Aktualisieren der Daten). Um den aktuellen Status der Statistiken herauszufinden, kann man DBCC SHOWCONTIG verwenden. Sollten die Statistiken nicht mehr aktuell sein, sollte man ein UPDATE STATISTICS bei der entsprechenden Tabelle verwenden, so kann der SQL-Server seine Informationen über die Indizes aktualisieren.

Planen hilft

Mit dem SQL-Server bekommt man auch ein Tool, das den Administrationsaufwand einer Datenbank gering halten soll und gewisse Routinen vereinfacht und automatisiert. Dieses Programm nennt sich Database Maintenance Plan Wizard (DMPW). Mit seiner Hilfe kann man die Statistiken über Indizes als wiederkehrende Aufgabe automatisch aktualisieren, somit entfällt der Aufwand eines manuellen Updates. Eine weitere Variante stellt die Reorganisation von Datensätzen dar, wobei die Indizes zuerst verworfen und dann mit einem vorher spezifizierten Füllfaktor neu erstellt werden.

Themenseiten: Big Data, Datenbank, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

ZDNet für mobile Geräte
ZDNet-App für Android herunterladen ZDNet-App für iOS

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Tipps zur Optimierung von SQL-Server-Indizes

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *