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.
Neueste Kommentare
Noch keine Kommentare zu Tipps zur Optimierung von SQL-Server-Indizes
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.