Welche Funktion hat die Neuerstellung von Indizes?

8

Ich bin jung in der IT-Welt und lerne täglich. Ich habe gerade angefangen, mit SQL-Datenbanken zu arbeiten, und ich habe viele grundlegende Fragen.

Eine insbesondere: Was ist die Funktion der Neuerstellung von Indizes? Ich habe noch keine gute Antwort über Google gefunden.

Jedes Feedback wird geschätzt.

Albert Green
quelle

Antworten:

11

Indizes werden neu erstellt, um Fragmentierung zu entfernen. Es gibt tausendundein Artikel und Blog-Beiträge über die Art der Indexfragmentierung, aber @BrentOzar hat kürzlich eine besonders kurze Erklärung in Stop Worrying About SQL Server Fragmentation veröffentlicht .

Machen wir einen Schritt zurück und tun so, als wäre Ihre Datenbank ein Telefonbuch, das nach Nachname und Vorname geordnet ist.

Wenn Leute in Ihre Stadt ziehen, müssen wir sie dem Telefonbuch hinzufügen. Im Idealfall hat jede Seite einen leeren Raum, und wir regeln dies mit dem Füllfaktor. Wenn SQL Server Indizes neu erstellt, verwendet es den Füllfaktor, um zu entscheiden, wie viel freier Speicherplatz auf jeder Seite verbleiben soll. Wenn nicht genügend freier Speicherplatz vorhanden ist, muss SQL Server einige Änderungen vornehmen. Eine brandneue Seite kann jedoch nicht genau in die Mitte des Telefonbuchs verschoben werden. Das Buch ist bereits gebunden. Wir müssen am Ende mehr leere Seiten anheften.

Problem Nr. 1 - Interne Fragmentierung: Wir haben eine neu hinzugefügte Seite mit kaum Inhalten. Problem Nr. 2 - Externe Fragmentierung: Die Telefonbuchseiten sind nicht in Ordnung.

Brents jüngster Artikel bietet eine aktualisierte Perspektive auf eine seiner vorherigen Serien, Index Fragmentation Findings . Der ältere Artikel hebt Statistiken aus viel älteren Studien zu den schädlichen Auswirkungen der Fragmentierung hervor. In jüngerer Zeit wird ein großer Prozentsatz der Leistungseinbußen gemindert, indem sichergestellt wird, dass Ihre Datenbank vollständig zwischengespeichert ist.

Ram ist jetzt so komisch billig, dass es wahrscheinlich die billigste, einfachste und risikoärmste Lösung für eine stark fragmentierte Datenbank ist. Insbesondere wenn das Datenbankdesign so beschaffen ist, dass es trotz Wartungsaufwand natürlich fragmentiert wird.

Mark Storey-Smith
quelle
3

Die stark vereinfachte Antwort - Indexwiederherstellung ist eine Möglichkeit, die Indexfragmentierung zu entfernen. Der angegebene Index wird gelöscht und die Fragmentierung wird erneut entfernt. Sie können diesen Artikel nützlich finden

RK Kuppala
quelle