Condividi tramite


Configurazione di operazioni parallele sugli indici

Questo argomento definisce il grado massimo di parallelismo e spiega come modificare questa impostazione in SQL Server 2014 usando SQL Server Management Studio o Transact-SQL. Nei computer multiprocessore che eseguono SQL Server Enterprise o versione successiva, le istruzioni index possono usare più processori per eseguire le operazioni di analisi, ordinamento e indice associate all'istruzione index esattamente come le altre query. 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. L'opzione max degree of parallelism determina il numero massimo di processori da utilizzare nell'esecuzione di piani paralleli. Se il motore di database SQL Server rileva che il sistema è occupato, il grado di parallelismo dell'operazione sull'indice viene automaticamente ridotto prima dell'avvio dell'esecuzione dell'istruzione. Il motore di database può anche ridurre il grado di parallelismo se la colonna chiave iniziale di un indice non partizionato ha un numero limitato di valori distinti o la frequenza di ogni valore distinto varia in modo significativo.

Nota

Le operazioni sugli indici paralleli non sono disponibili in ogni edizione SQL Server. Per ulteriori informazioni, vedere Features Supported by the Editions of SQL Server 2014.

Contenuto dell'articolo

Prima di iniziare

Limitazioni e restrizioni

  • Il numero di processori utilizzati da Query Optimizer implica normalmente le prestazioni ottimali. 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. 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.

  • L'opzione di indice MAXDOP è prioritaria rispetto all'opzione di configurazione max degree of parallelism solo per la query che specifica tale opzione. 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.

    valore Descrizione
    0 Specifica che il server determina il numero di CPU utilizzate, a seconda del carico di lavoro del sistema corrente. Si tratta del valore predefinito e dell'impostazione consigliata.
    1 Disattiva la generazione di piani paralleli. L'operazione verrà eseguita in modo serializzato.
    2-64 Limita il numero di processori al valore specificato. È possibile che il numero possa essere ridotto in base al carico di lavoro corrente. Se viene specificato un valore maggiore di quello delle CPU disponibili, viene utilizzato l'effettivo numero di CPU disponibili.
  • L'esecuzione parallela dell'indice e l'opzione di indice MAXDOP si applicano alle istruzioni Transact-SQL seguenti:

    • CREATE INDEX

    • ALTER INDEX REBUILD

    • DROP INDEX (si applica solo agli indici cluster).

    • ALTER TABLE ADD (indice) CONSTRAINT

    • ALTER TABLE DROP (indice cluster) CONSTRAINT

  • L'opzione di indice MAXDOP non può essere specificata nell'istruzione ALTER INDEX REORGANIZE.

  • 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. Maggiori i gradi di parallelismo, maggiori i requisiti di memoria. Per ulteriori informazioni, vedere Partitioned Tables and Indexes.

Sicurezza

Autorizzazioni

È richiesta l'autorizzazione ALTER per la tabella o la vista.

Uso di SQL Server Management Studio

Per impostare l'opzione max degree of parallelism su un indice

  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.

  2. Espandere la cartella Tabelle .

  3. Fare clic sul segno più per espandere la tabella in cui si desidera impostare l'opzione max degree of parallelism per un indice.

  4. Espandere la cartella Indici .

  5. Fare clic con il pulsante destro del mouse sull'indice per cui si vuole impostare il massimo grado di parallelismo e scegliere Proprietà.

  6. In Selezione paginaselezionare Opzioni.

  7. Selezionare Maximum degree of parallelisme immettere un valore compreso tra 1 e 64.

  8. Fare clic su OK.

Uso di Transact-SQL

Per impostare l'opzione max degree of parallelism su un indice esistente

  1. In Esplora oggetti connettersi a un'istanza del motore di database.

  2. Sulla barra Standard fare clic su Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.

    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).

Impostare l'opzione max degree of parallelism su un nuovo indice

  1. In Esplora oggetti connettersi a un'istanza del motore di database.

  2. Sulla barra Standard fare clic su Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.

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

Per altre informazioni, vedere CREATE INDEX (Transact-SQL).