Konfigurieren von Parallelindexvorgänge

Auf Multiprozessorcomputern, auf denen SQL Server Enterprise ausgeführt wird, werden für Indexanweisungen unter Umständen mehrere Prozessoren verwendet, um Scan-, Sortierungs- und Indexvorgänge auszuführen. Dies geschieht in gleicher Weise wie für andere Abfragen. Die Anzahl der Prozessoren, die zur Ausführung einer einzelnen Indexanweisung verwendet werden, wird durch die Konfigurationsoption max degree of parallelism sowie durch die aktuelle Arbeitslast und die Indexstatistiken bestimmt. Mit der Option Max. Grad an Parallelität wird die maximale Anzahl der Prozessoren festgelegt, die bei der Ausführung paralleler Pläne verwendet werden sollen. Wenn SQL Server Database Engine (Datenbankmodul) feststellt, dass das System ausgelastet ist, wird der Grad der Parallelität des Indexvorgangs automatisch verringert, bevor mit dem Ausführen der Anweisung begonnen wird. Database Engine (Datenbankmodul) kann den Grad der Parallelität auch verringern, wenn die führende Schlüsselspalte eines nicht partitionierten Indexes eine begrenzte Anzahl unterschiedlicher Werte aufweist, oder wenn die Häufigkeit der einzelnen unterschiedlichen Werte stark schwankt.

HinweisHinweis

Parallele Indexvorgänge sind nur in der SQL Server Enterprise, Developer und Evaluation Edition verfügbar.

Mit der Anzahl der Prozessoren, die vom Abfrageoptimierer verwendet wird, kann zumeist eine optimale Leistung gewährleistet werden. Allerdings können bestimmte Vorgänge, wie das Erstellen, erneute Erstellen oder Löschen sehr großer Indizes die Ressourcen stark beanspruchen, wodurch während des Indexvorgangs möglicherweise nicht genügend Ressourcen für andere Anwendungen und Datenbankvorgänge verfügbar sind. Wenn dieses Problem auftritt, können Sie manuell die maximale Anzahl der Prozessoren konfigurieren, die zum Ausführen der Indexanweisung verwendet werden. Dazu geben Sie die MAXDOP-Indexoption an und schränken damit die Anzahl der Prozessoren ein, die für den Indexvorgang verwendet werden.

Die MAXDOP-Indexoption setzt die max degree of parallelism-Konfigurationsoption außer Kraft, jedoch nur für die Abfrage, die diese Option angibt. Die folgende Tabelle gibt einen Überblick über die gültigen ganzzahligen Werte, die mit der max degree of parallelism-Konfigurationsoption und der MAXDOP-Indexoption angegeben werden können.

Wert

Beschreibung

0

Verwendet in Abhängigkeit von der aktuellen Systemlast die tatsächliche Anzahl der verfügbaren CPUs. Dies ist die Standardeinstellung und die empfohlene Einstellung.

1

Unterdrückt das Generieren paralleler Pläne. Die Operationen werden dann nacheinander, also seriell ausgeführt.

2-64

Schränkt die Anzahl der Prozessoren auf den angegebenen Wert ein. In Abhängigkeit von der aktuellen Systemlast kann eine geringere Anzahl von Prozessoren verwendet werden. Wird ein Wert angegeben, der über der Anzahl der verfügbaren CPUs liegt, wird die tatsächliche Anzahl der CPUs verwendet.

Die parallele Indexausführung und die MAXDOP-Indexoption gelten für die folgenden Transact-SQL-Anweisungen:

  • CREATE INDEX

  • ALTER INDEX REBUILD

  • DROP INDEX (Gilt nur für gruppierte Indizes.)

  • ALTER TABLE ADD (Index) CONSTRAINT

  • ALTER TABLE DROP (gruppierter Index) CONSTRAINT

Alle semantischen Regeln, die für die Verwendung der max degree of parallelism-Konfigurationsoption gelten, gelten auch für die Verwendung der MAXDOP-Indexoption. Weitere Informationen finden Sie unter max degree of parallelism (Option).

Wenn Sie ALTER INDEX REORGANIZE mit oder ohne LOB_COMPACTION ausführen, entspricht der max degree of parallelism-Wert einer Operation mit einem einzelnen Thread. In der ALTER INDEX REORGANIZE-Anweisung kann die MAXDOP-Indexoption nicht angegeben werden.

Onlineindexvorgang

Onlineindexvorgänge ermöglichen gleichzeitige Benutzeraktivitäten während der Ausführung des Indexvorgangs. Mithilfe der MAXDOP-Indexoption können Sie festlegen, wie viele Prozessoren maximal für den Onlineindexvorgang verwendet werden. Auf diese Weise können Sie die Ressourcen, die von dem Indexvorgang verwendet werden, mit den Ressourcen gleichzeitiger Benutzer ausgleichen. Weitere Informationen finden Sie unter Ausführen von Onlineindexvorgängen.

Partitionsindexvorgang

Die Speicheranforderungen für partitionierte Indexvorgänge, bei denen Sortiervorgänge erforderlich sind, können größer sein, wenn der Abfrageoptimierer Grade der Parallelität beim Erstellungsvorgang verwendet. Je höher der Grad der Parallelität ist, desto höher ist der Speicherbedarf. Weitere Informationen finden Sie unter Spezielle Richtlinien für partitionierte Indizes.

Beispiele

Das folgende Beispiel erstellt den Index IX_ProductVendor_VendorID in der ProductVendor-Tabelle und legt die max degree of parallelism-Option auf 8 fest. Angenommen, der Server verfügt über acht oder mehr Prozessoren, dann schränkt Database Engine (Datenbankmodul) die Ausführung der Indexvorgänge auf acht oder weniger Prozessoren ein.

USE AdventureWorks;
GO
IF EXISTS (SELECT name FROM sys.indexes
            WHERE name = N'IX_ProductVendor_VendorID')
    DROP INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor;
GO
CREATE INDEX IX_ProductVendor_VendorID 
ON Purchasing.ProductVendor (VendorID)
WITH (MAXDOP=8);
GO