Configurazione di operazioni parallele sugli indiciConfigure Parallel Index Operations

QUESTO ARGOMENTO SI APPLICA A: sìSQL Server (a partire dalla versione 2016)sìDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

In questo argomento viene definito il massimo grado di parallelismo e viene spiegato come modificare questa impostazione in SQL Server 2017SQL Server 2017 tramite SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.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. Nei computer multiprocessore che eseguono SQL ServerSQL Server Enterprise Edition o versioni successive, le istruzioni per gli indici, proprio come le altre query, possono utilizzare più processori per eseguire le operazioni di analisi, ordinamento e indicizzazione associate all'istruzione.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. Il numero di processori usati per eseguire una singola istruzione per gli indici è determinato dall'opzione di configurazione max degree of parallelism , dal carico di lavoro corrente e dalle statistiche dell'indice.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. L'opzione max degree of parallelism determina il numero massimo di processori da utilizzare nell'esecuzione di piani paralleli.The max degree of parallelism option determines the maximum number of processors to use in parallel plan execution. Se in Motore di database di SQL ServerSQL Server Database Engine viene rilevato che il sistema è occupato, il grado di parallelismo dell'operazione di indice viene automaticamente ridotto prima che l'esecuzione dell'istruzione venga avviata.If the Motore di database di SQL ServerSQL Server Database Engine detects that the system is busy, the degree of parallelism of the index operation is automatically reduced before statement execution starts. Il Motore di databaseDatabase Engine consente inoltre di ridurre il grado di parallelismo se la colonna chiave iniziale di un indice non partizionato ha un numero limitato di valori distinti o se la frequenza di ciascun valore distinto varia in modo significativo.The Motore di databaseDatabase 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.

Nota

Le operazioni parallele sugli indici sono disponibili solo in alcune edizioni di SQL ServerSQL Server .Parallel index operations are not available in every SQL ServerSQL Server edition. Per altre informazioni, vedere Funzionalità supportate dalle edizioni di SQL Server 2016For more information, see Features Supported by the Editions of SQL Server 2016

Contenuto dell'argomentoIn This Topic

Prima di iniziare Before You Begin

Limitazioni e restrizioni Limitations and Restrictions

  • Il numero di processori utilizzati da Query Optimizer implica normalmente le prestazioni ottimali.The number of processors that are used by the query optimizer typically provides optimal performance. Tuttavia, operazioni come la creazione, la ricompilazione o l'eliminazione di indici di grandi dimensioni utilizzano molte risorse e possono determinare una mancanza di risorse per le altre applicazioni e operazioni di database per la durata dell'operazione di indice.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. Quando si verifica questo problema, è possibile configurare manualmente il numero massimo di processori utilizzati per eseguire l'istruzione per l'indice limitando il numero di processori da utilizzare per l'operazione di indice.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.

  • L'opzione di indice MAXDOP è prioritaria rispetto all'opzione di configurazione max degree of parallelism solo per la query che specifica tale opzione.The MAXDOP index option overrides the max degree of parallelism configuration option only for the query specifying this option. La tabella seguente elenca i valori integer validi che è possibile specificare con l'opzione di configurazione max degree of parallelism e l'opzione di indice MAXDOP.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.

    ValoreValue DescrizioneDescription
    00 Specifica che il server determina il numero di CPU utilizzate, a seconda del carico di lavoro del sistema corrente.Specifies that the server determines the number of CPUs that are used, depending on the current system workload. Si tratta del valore predefinito e dell'impostazione consigliata.This is the default value and recommended setting.
    11 Disattiva la generazione di piani paralleli.Suppresses parallel plan generation. L'operazione verrà eseguita in modo serializzato.The operation will be executed serially.
    2-642-64 Limita il numero di processori al valore specificato.Limits the number of processors to the specified value. È possibile che il numero possa essere ridotto in base al carico di lavoro corrente.Fewer processors may be used depending on the current workload. Se viene specificato un valore maggiore di quello delle CPU disponibili, viene utilizzato l'effettivo numero di CPU disponibili.If a value larger than the number of available CPUs is specified, the actual number of available CPUs is used.
  • L'esecuzione dell'indice in parallelo e l'opzione di indice MAXDOP si applicano alle istruzioni Transact-SQLTransact-SQL seguenti: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 (si applica solo agli indici cluster).DROP INDEX (This applies to clustered indexes only.)

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

    • ALTER TABLE DROP (indice cluster) CONSTRAINTALTER TABLE DROP (clustered index) CONSTRAINT

  • L'opzione di indice MAXDOP non può essere specificata nell'istruzione ALTER INDEX REORGANIZE.The MAXDOP index option cannot be specified in the ALTER INDEX REORGANIZE statement.

  • I requisiti di memoria per le operazioni di indice partizionato che richiedono l'ordinamento possono essere maggiori se Query Optimizer applica i gradi di parallelismo all'operazione di compilazione.Memory requirements for partitioned index operations that require sorting can be greater if the query optimizer applies degrees of parallelism to the build operation. Maggiori i gradi di parallelismo, maggiori i requisiti di memoria.The higher the degrees of parallelism, the greater the memory requirement is. Per altre informazioni, vedere Partitioned Tables and Indexes.For more information, see Partitioned Tables and Indexes.

Sicurezza Security

Autorizzazioni Permissions

È richiesta l'autorizzazione ALTER per la tabella o la vista.Requires ALTER permission on the table or view.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per impostare l'opzione max degree of parallelism su un indiceTo set max degree of parallelism on an index

  1. In Esplora oggetti fare clic sul segno più per espandere il database contenente la tabella in cui si desidera impostare l'opzione max degree of parallelism per un indice.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. Espandere la cartella Tabelle .Expand the Tables folder.

  3. Fare clic sul segno più per espandere la tabella in cui si desidera impostare l'opzione max degree of parallelism per un indice.Click the plus sign to expand the table on which you want to set max degree of parallelism for an index.

  4. Espandere la cartella Indici .Expand the Indexes folder.

  5. Fare clic con il pulsante destro del mouse sull'indice per cui si vuole impostare il massimo grado di parallelismo e scegliere Proprietà.Right-click the index for which you want to set the max degree of parallelism and select Properties.

  6. In Selezione paginaselezionare Opzioni.Under Select a page, select Options.

  7. Selezionare Maximum degree of parallelisme immettere un valore compreso tra 1 e 64.Select Maximum degree of parallelism, and then enter some value between 1 and 64.

  8. Scegliere OK.Click OK.

Utilizzo di Transact-SQL Using Transact-SQL

Per impostare l'opzione max degree of parallelism su un indice esistenteTo set max degree of parallelism on an existing index

  1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine.

  2. Sulla barra Standard fare clic su Nuova query.On the Standard bar, click New Query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.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  
    

    Per altre informazioni, vedere ALTER INDEX (Transact-SQL).For more information, see ALTER INDEX (Transact-SQL).

Impostare l'opzione max degree of parallelism su un nuovo indiceSet max degree of parallelism on a new index

  1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine.

  2. Sulla barra Standard fare clic su Nuova query.On the Standard bar, click New Query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.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  
    

    Per altre informazioni, vedere CREATE INDEX (Transact-SQL).For more information, see CREATE INDEX (Transact-SQL).