Konfigurieren von ParallelindexvorgängenConfigure Parallel Index Operations

GILT FÜR: jaSQL ServerjaAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure 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.This topic defines max degree of parallelism and explains how to modify this setting in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. 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.On multiprocessor computers that are running SQL ServerSQL Server Enterprise or higher, index statements may use multiple processors to perform the scan, sort, and index operations associated with the index statement just like other queries do. 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.The number of processors used to run a single index statement is determined by the max degree of parallelism configuration option, the current workload, and the index statistics. 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.The max degree of parallelism option determines the maximum number of processors to use in parallel plan execution. Wenn SQL Server-Datenbank-EngineSQL 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.If the SQL Server-Datenbank-EngineSQL Server Database Engine detects that the system is busy, the degree of parallelism of the index operation is automatically reduced before statement execution starts. Datenbank-EngineDatabase 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.The Datenbank-EngineDatabase Engine can also reduce the degree of parallelism if the leading key column of a non-partitioned index has a limited number of distinct values or the frequency of each distinct value varies significantly.

Hinweis

Parallele Indexvorgänge sind nicht in jeder SQL ServerSQL Server Edition verfügbar.Parallel index operations are not available in every SQL ServerSQL Server edition. Weitere Informationen finden Sie unter „Von den SQL Server 2016-Editionen unterstützte Funktionen“.For more information, see Features Supported by the Editions of SQL Server 2016

In diesem ThemaIn This Topic

VorbereitungsmaßnahmenBefore You Begin

EinschränkungenLimitations and Restrictions

  • Mit der Anzahl der Prozessoren, die vom Abfrageoptimierer verwendet wird, kann zumeist eine optimale Leistung gewährleistet werden.The number of processors that are used by the query optimizer typically provides optimal performance. 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.However, operations such as creating, rebuilding, or dropping very large indexes are resource intensive and can cause insufficient resources for other applications and database operations for the duration of the index operation. 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.When this problem occurs, you can manually configure the maximum number of processors that are used to run the index statement by limiting the number of processors to use for the index operation.

  • Die MAXDOP-Indexoption überschreibt die Max. Grad an Parallelität-Konfigurationsoption, jedoch nur für die Abfrage, die diese Option angibt.The MAXDOP index option overrides the max degree of parallelism configuration option only for the query specifying this option. 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.The following table lists the valid integer values that can be specified with the max degree of parallelism configuration option and the MAXDOP index option.

    WertValue BeschreibungDescription
    00 Gibt an, dass der Server die Anzahl der CPUs festlegt, die verwendet werden, abhängig von der aktuellen Systemarbeitsauslastung.Specifies that the server determines the number of CPUs that are used, depending on the current system workload. Dies ist die Standardeinstellung und die empfohlene Einstellung.This is the default value and recommended setting.
    11 Unterdrückt das Generieren paralleler Pläne.Suppresses parallel plan generation. Die Operationen werden dann nacheinander, also seriell ausgeführt.The operation will be executed serially.
    2-642-64 Schränkt die Anzahl der Prozessoren auf den angegebenen Wert ein.Limits the number of processors to the specified value. In Abhängigkeit von der aktuellen Systemlast kann eine geringere Anzahl von Prozessoren verwendet werden.Fewer processors may be used depending on the current workload. Wird ein Wert angegeben, der über der Anzahl der verfügbaren CPUs liegt, wird die tatsächliche Anzahl der CPUs verwendet.If a value larger than the number of available CPUs is specified, the actual number of available CPUs is used.
  • Die parallele Indexausführung und die MAXDOP-Indexoption gelten für die folgenden Transact-SQLTransact-SQL -Anweisungen:Parallel index execution and the MAXDOP index option apply to the following Transact-SQLTransact-SQL statements:

    • CREATE INDEXCREATE INDEX

    • ALTER INDEX REBUILDALTER INDEX REBUILD

    • DROP INDEX (Gilt nur für gruppierte Indizes.)DROP INDEX (This applies to clustered indexes only.)

    • ALTER TABLE ADD (Index) CONSTRAINTALTER TABLE ADD (index) CONSTRAINT

    • ALTER TABLE DROP (gruppierter Index) CONSTRAINTALTER TABLE DROP (clustered index) CONSTRAINT

  • In der ALTER INDEX REORGANIZE-Anweisung kann die MAXDOP-Indexoption nicht angegeben werden.The MAXDOP index option cannot be specified in the ALTER INDEX REORGANIZE statement.

  • 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.Memory requirements for partitioned index operations that require sorting can be greater if the query optimizer applies degrees of parallelism to the build operation. Je höher der Grad der Parallelität ist, desto höher ist der Speicherbedarf.The higher the degrees of parallelism, the greater the memory requirement is. Weitere Informationen finden Sie unter Partitioned Tables and Indexes.For more information, see Partitioned Tables and Indexes.

SicherheitSecurity

BerechtigungenPermissions

Erfordert die ALTER-Berechtigung in der Tabelle oder Sicht.Requires ALTER permission on the table or view.

Verwenden von SQL Server Management StudioUsing SQL Server Management Studio

So legen Sie den maximalen Grad an Parallelität für einen Index festTo set max degree of parallelism on an index

  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.In Object Explorer, click the plus sign to expand the database that contains the table on which you want to set max degree of parallelism for an index.

  2. Erweitern Sie den Ordner Tabellen .Expand the Tables folder.

  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.Click the plus sign to expand the table on which you want to set max degree of parallelism for an index.

  4. Erweitern Sie den Ordner Indizes .Expand the Indexes folder.

  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.Right-click the index for which you want to set the max degree of parallelism and select Properties.

  6. Wählen Sie unter Seite auswählendie Option Optionenaus.Under Select a page, select Options.

  7. Wählen Sie Maximaler Grad an Parallelitätaus, und geben Sie dann einen Wert zwischen 1 und 64 ein.Select Maximum degree of parallelism, and then enter some value between 1 and 64.

  8. Klicken Sie auf OK.Click OK.

Verwenden von Transact-SQLUsing Transact-SQL

So legen Sie den maximalen Grad an Parallelität für einen vorhandenen Index festTo set max degree of parallelism on an existing index

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-EngineDatabase Engine-Instanz her.In Object Explorer, connect to an instance of Datenbank-EngineDatabase Engine.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.On the Standard bar, click New Query.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.Copy and paste the following example into the query window and click Execute.

    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).For more information, see ALTER INDEX (Transact-SQL).

So legen Sie den maximalen Grad an Parallelität für einen neuen Index festSet max degree of parallelism on a new index

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-EngineDatabase Engine-Instanz her.In Object Explorer, connect to an instance of Datenbank-EngineDatabase Engine.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.On the Standard bar, click New Query.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.Copy and paste the following example into the query window and click Execute.

    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).For more information, see CREATE INDEX (Transact-SQL).