Konfigurieren von Parallelindexvorgängen

DIESES THEMA GILT FÜR:jaSQL Server (ab 2016)jaAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

In diesem Thema wird der maximale Grad an Parallelität beschrieben und erläutert, wie Sie diese Einstellung in SQL Server 2017SQL Server 2017 mithilfe von SQL Server Management StudioSQL Server Management Studio oder Transact-SQLTransact-SQLändern. Auf Multiprozessorcomputern, auf denen SQL ServerSQL Server Enterprise oder höher ausgeführt wird, werden für Indexanweisungen möglicherweise mehrere Prozessoren verwendet, um die mit der Indexanweisung verknüpften Scan-, Sortierungs- und Indexvorgänge auszuführen. Dies geschieht in gleicher Weise wie bei anderen Abfragen. Die Anzahl der Prozessoren, die zur Ausführung einer einzelnen Indexanweisung verwendet werden, wird durch die Konfigurationsoption Max. Grad an Parallelität 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-DatenbankmodulSQL Server Database Engine 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. DatenbankmodulDatabase Engine 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.

Hinweis

Parallele Indexvorgänge sind nicht in jeder SQL ServerSQL Server Edition verfügbar. Weitere Informationen finden Sie unter „Von den SQL Server 2016-Editionen unterstützte Funktionen“.

In diesem Thema

Vorbereitungen

Einschränkungen

  • 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 die zum Ausführen der Indexanweisung verwendete maximale Anzahl von Prozessoren manuell konfigurieren, indem Sie die Anzahl von Prozessoren für den Indexvorgang verringern.

  • Die MAXDOP-Indexoption überschreibt die Max. Grad an Parallelität-Konfigurationsoption, jedoch nur für die Abfrage, die diese Option angibt. In der folgenden Tabelle werden die gültigen ganzzahligen Werte aufgelistet, die mit der Max. Grad an Parallelität-Konfigurationsoption und der MAXDOP-Indexoption angegeben werden können.

    Wert Beschreibung
    0 Gibt an, dass der Server die Anzahl der CPUs festlegt, die verwendet werden, abhängig von der aktuellen Systemarbeitsauslastung. 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-SQLTransact-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

  • In der ALTER INDEX REORGANIZE-Anweisung kann die MAXDOP-Indexoption nicht angegeben werden.

  • 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 Partitioned Tables and Indexes.

Sicherheit

Berechtigungen

Erfordert die ALTER-Berechtigung in der Tabelle oder Sicht.

Verwendung von SQL Server Management Studio

So legen Sie den maximalen Grad an Parallelität für einen Index fest

  1. Klicken Sie im Objekt-Explorer auf das Pluszeichen, um die Datenbank mit der Tabelle zu erweitern, in der Sie den maximalen Grad an Parallelität für einen Index festlegen möchten.

  2. Erweitern Sie den Ordner Tabellen .

  3. Klicken Sie auf das Pluszeichen, um die Tabelle zu erweitern, in der Sie den maximalen Grad an Parallelität für einen Index festlegen möchten.

  4. Erweitern Sie den Ordner Indizes .

  5. Klicken Sie mit der rechten Maustaste auf den Index, für den Sie den maximalen Grad an Parallelität festlegen möchten, und wählen Sie Eigenschaftenaus.

  6. Wählen Sie unter Seite auswählendie Option Optionenaus.

  7. Wählen Sie Maximaler Grad an Parallelitätaus, und geben Sie dann einen Wert zwischen 1 und 64 ein.

  8. Klicken Sie auf OK.

Verwenden von Transact-SQL

So legen Sie den maximalen Grad an Parallelität für einen vorhandenen Index fest

  1. Stellen Sie im Objekt-Explorereine Verbindung mit einer DatenbankmodulDatabase Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.

    USE AdventureWorks2012;   
    GO  
    /*Alters the IX_ProductVendor_VendorID index on the Purchasing.ProductVendor table so that, if the server has eight or more processors, the Database Engine will limit the execution of the index operation to eight or fewer processors.  
    */  
    ALTER INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor  
    REBUILD WITH (MAXDOP=8);   
    GO  
    

    Weitere Informationen finden Sie unter ALTER INDEX (Transact-SQL).

So legen Sie den maximalen Grad an Parallelität für einen neuen Index fest

  1. Stellen Sie im Objekt-Explorereine Verbindung mit einer DatenbankmodulDatabase Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.

    USE AdventureWorks2012;  
    GO  
    CREATE INDEX IX_ProductVendor_NewVendorID   
    ON Purchasing.ProductVendor (BusinessEntityID)  
    WITH (MAXDOP=8);  
    GO  
    

    Weitere Informationen finden Sie unter CREATE INDEX (Transact-SQL).