Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Für das Ausführen von Onlineindexvorgängen gelten die folgenden Richtlinien:
Gruppierte Indizes müssen erstellt, neu erstellt oder offline abgelegt werden, wenn die zugrunde liegende Tabelle die folgenden Datentypen für große Objekte (Lob) enthält:
image, ntext undtext.Indizes für lokale temporäre Tabellen können nicht erstellt, neu erstellt oder online abgelegt werden. Diese Einschränkung gilt nicht für Indizes in globalen Temporären Tabellen.
Hinweis
Onlineindexvorgänge sind in jeder Edition von MicrosoftSQL Server nicht verfügbar. Eine Liste der Features, die von den Editionen von SQL Server unterstützt werden, finden Sie unter Features, die von den Editionen von SQL Server 2014 unterstützt werden.
In der folgenden Tabelle sind die Indexvorgänge aufgeführt, die online ausgeführt werden können, sowie die Indizes, die von diesen Onlinevorgängen ausgeschlossen sind. Weitere Einschränkungen sind ebenfalls enthalten.
| Onlineindexvorgang | Ausgeschlossene Indizes | Weitere Einschränkungen |
|---|---|---|
| ALTER INDEX REBUILD | Deaktivierte gruppierte Index- oder deaktivierte indizierte Ansicht XML-Index Columnstore-Index Index für eine lokale temp-Tabelle |
Das Angeben des Schlüsselworts ALL kann dazu führen, dass der Vorgang fehlschlägt, wenn die Tabelle einen ausgeschlossenen Index enthält. Weitere Einschränkungen für die Wiederherstellung deaktivierter Indizes gelten. Weitere Informationen finden Sie unter "Indizes und Einschränkungen deaktivieren". |
| INDEX ERSTELLEN | XML-Index Eindeutiger gruppierter Ausgangsindex für eine Sicht Index für eine lokale temp-Tabelle |
|
| INDEX MIT DROP_EXISTING ERSTELLEN | Deaktivierter Index mit Gruppierung oder deaktivierte Indexansicht Index für eine lokale temp-Tabelle XML-Index |
|
| DROP INDEX | Deaktivierter Index XML-Index Nicht gruppierter Index Index für eine lokale temp-Tabelle |
Mehrere Indizes können nicht innerhalb einer einzelnen Anweisung angegeben werden. |
| ALTER TABLE ADD CONSTRAINT (PRIMÄRSCHLÜSSEL oder EINDEUTIG) | Index für eine lokale temp-Tabelle Gruppierter Index |
Es darf gleichzeitig nur eine Unterklausel verwendet werden. Beispielsweise können Sie in derselben ALTER TABLE-Anweisung keine PRIMARY KEY- oder UNIQUE-Einschränkungen gleichzeitig hinzufügen und ablegen. |
Die zugrunde liegende Tabelle kann nicht geändert, abgeschnitten oder verworfen werden, während ein Onlineindexvorgang ausgeführt wird.
Die Beim Erstellen oder Ablegen eines gruppierten Indexes angegebene Onlineoptionseinstellung (ON oder OFF) wird auf nicht gruppierte Indizes angewendet, die neu erstellt werden müssen. Wenn der gruppierte Index beispielsweise online erstellt wird, indem man die Anweisung CREATE INDEX WITH DROP_EXISTING, ONLINE=ON verwendet, werden alle zugehörigen nichtgruppierten Indizes ebenfalls online neu erstellt.
Wenn Sie einen UNIQUE-Index online erstellen oder neu erstellen, kann der Index-Generator und eine gleichzeitige Benutzertransaktion versuchen, denselben Schlüssel einzufügen, wodurch die Eindeutigkeit verletzt wird. Wenn eine zeile, die von einem Benutzer eingegeben wird, in den neuen Index (Ziel) eingefügt wird, bevor die ursprüngliche Zeile aus der Quelltabelle in den neuen Index verschoben wird, schlägt der Onlineindexvorgang fehl.
Obwohl nicht häufig, kann der Onlineindexvorgang zu einem Deadlock führen, wenn er aufgrund von Benutzer- oder Anwendungsaktivitäten mit Datenbankaktualisierungen interagiert. In diesen seltenen Fällen wählt das SQL Server-Datenbankmodul die Benutzer- oder Anwendungsaktivität als Deadlock-Opfer aus.
Sie können gleichzeitige DDL-Vorgänge im Onlineindex nur für dieselbe Tabelle oder Ansicht ausführen, wenn Sie mehrere neue nicht gruppierte Indizes erstellen oder nicht gruppierte Indizes neu organisieren. Alle anderen gleichzeitig durchgeführten Onlineindexvorgänge erzeugen einen Fehler. Sie können z. B. keinen neuen Index online erstellen, während Sie einen vorhandenen Index online in derselben Tabelle neu erstellen.
Ein Onlinevorgang kann nicht ausgeführt werden, wenn ein Index eine Spalte des großen Objekttyps enthält, und in derselben Transaktion gibt es Aktualisierungsvorgänge vor diesem Onlinevorgang. Um dieses Problem zu umgehen, platzieren Sie den Onlinevorgang außerhalb der Transaktion, oder platzieren Sie ihn vor Aktualisierungen in der Transaktion.
Überlegungen zum Speicherplatz
Im Allgemeinen sind die Speicherplatzanforderungen für Online- und Offlineindexvorgänge identisch. Eine Ausnahme ist zusätzlicher Speicherplatz, der vom temporären Zuordnungsindex benötigt wird. Dieser temporäre Index wird in Onlineindexvorgängen verwendet, die einen gruppierten Index erstellen, neu erstellen oder löschen. Das Ablegen eines gruppierten Index online erfordert so viel Platz wie das Erstellen eines gruppierten Indexes online. Weitere Informationen finden Sie unter "Speicherplatzanforderungen für DDL-Indexvorgänge".
Überlegungen zur Leistung
Obwohl Onlineindexvorgänge gleichzeitige Benutzeraktualisierungsaktivitäten zulassen, dauert die Indexoperation länger, wenn die Aktualisierungsaktivität sehr stark ist. In der Regel sind Onlineindexvorgänge langsamer als gleichwertige Offlineindexvorgänge, unabhängig von der gleichzeitigen Aktualisierungsaktivitätsstufe.
Da sowohl die Quell- als auch die Zielstrukturen während des Online-Indexvorgangs beibehalten werden, wird die Ressourcenauslastung für Einfüge-, Aktualisierungs- und Löschvorgänge erhöht, was potenziell bis zu doppelt so hoch sein kann. Dies kann zu einer Abnahme der Leistung und einer höheren Ressourcenauslastung, insbesondere der CPU-Zeit, während des Indexvorgangs führen. Onlineindexvorgänge werden vollständig protokolliert.
Obwohl wir Onlinevorgänge empfehlen, sollten Sie Ihre Umgebung und bestimmte Anforderungen auswerten. Es kann optimal sein, Indexvorgänge offline auszuführen. Dadurch haben Benutzer den Zugriff auf die Daten während des Vorgangs eingeschränkt, der Vorgang wird jedoch schneller abgeschlossen und verwendet weniger Ressourcen.
Auf Multiprozessorcomputern, auf denen SQL Server 2014 ausgeführt wird, können Indexanweisungen mehr Prozessoren verwenden, um die Überprüfungs- und Sortiervorgänge auszuführen, die der Index-Anweisung zugeordnet sind, genau wie bei anderen Abfragen. Sie können die MAXDOP-Indexoption verwenden, um die Anzahl der Prozessoren zu steuern, die dem Onlineindexvorgang zugeordnet sind. Auf diese Weise können Sie die beim Indexvorgang verwendeten Ressourcen mit denen der gleichzeitigen Benutzer ausbalancieren. Weitere Informationen finden Sie unter Konfigurieren von Parallelindexvorgängen. Weitere Informationen zu den Editionen von SQL Server, die parallele indizierte Vorgänge unterstützen, finden Sie unter Features, die von den Editionen von SQL Server 2014 unterstützt werden.
Da eine S-Sperre oder Sch-M-Sperre in der letzten Phase des Indexvorgangs gehalten wird, seien Sie vorsichtig, wenn Sie einen Online-Indexvorgang innerhalb einer expliziten Benutzertransaktion ausführen, zum Beispiel in einem BEGIN TRANSACTION... COMMIT-Block. In diesem Fall bleibt die Sperre aktiviert, bis die Transaktion beendet ist, und beeinträchtigt daher die Benutzerparallelität.
Die Neuerstellung von Onlineindexen kann die Fragmentierung erhöhen, wenn sie mit MAX DOP > 1 und ALLOW_PAGE_LOCKS = OFF Optionen ausgeführt werden darf. Weitere Informationen finden Sie unter How It Works: Online Index Rebuild – Kann zu einer erhöhten Fragmentierung führen.
Überlegungen zum Transaktionsprotokoll
Umfangreiche Indexvorgänge, die offline oder online ausgeführt werden, können große Datenlasten generieren, die das Transaktionsprotokoll schnell füllen können. Um sicherzustellen, dass der Indexvorgang rückgängig gemacht werden kann, darf das Transaktionsprotokoll erst gekürzt werden, wenn der Indexvorgang abgeschlossen wurde; das Protokoll kann jedoch während des Indexvorgangs gesichert werden. Aus diesem Grund muss das Transaktionsprotokoll für die Dauer des Indexvorgangs genügend Speicherplatz zum Speichern der Transaktionen des Indexvorgangs sowie ggf. der gleichzeitigen Benutzertransaktionen aufweisen. Weitere Informationen finden Sie unter Transaktionsprotokollspeicherplatz für Indexvorgänge.
Verwandte Inhalte
Funktionsweise von Onlineindexvorgängen