Configurazione di operazioni parallele sugli indici

In questo argomento viene definito il massimo grado di parallelismo e viene spiegato come modificare questa impostazione in SQL Server 2012 tramite SQL Server Management Studio o Transact-SQL. Nei computer multiprocessore che eseguono SQL 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. Il numero di processori utilizzati 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 consente di determinare il numero massimo di processori da utilizzare per l'esecuzione di piani paralleli. Se in Motore di database di SQL Server 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. Il Motore di database 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.

[!NOTA]

Le operazioni parallele sugli indici sono disponibili solo in alcune edizioni di SQL Server. Per ulteriori informazioni, vedere Funzionalità supportate dalle edizioni di SQL Server 2012.

Contenuto dell'argomento

  • Prima di iniziare:

    Limitazioni e restrizioni

    Sicurezza

  • Per configurare l'opzione max degree of parallelism utilizzando:

    SQL Server Management Studio

    Transact-SQL

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 interi 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 dell'indice in parallelo 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 Tabelle e indici partizionati.

Sicurezza

Autorizzazioni

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

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Utilizzo 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 desidera impostare l'opzione max degree of parallelism e scegliere Proprietà.

  6. In Selezione pagina selezionare Opzioni.

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

  8. Scegliere OK.

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Utilizzo 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 ulteriori 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 ulteriori informazioni, vedere CREATE INDEX (Transact-SQL).

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]