Condividi tramite


Configurare operazioni parallele sugli indici

Si applica a:SQL ServerAzure SQL DatabaseAzure SQL Istanza gestitaDatabase SQL in Microsoft Fabric

Questo articolo definisce il grado massimo di parallelismo e spiega come modificare questa impostazione in SQL Server usando SQL Server Management Studio o Transact-SQL.

Nei sistemi multiprocessore che eseguono SQL Server Enterprise o versione successiva, le istruzioni di indice possono usare più processori (CPU) per eseguire le operazioni di analisi, ordinamento e indice associate all'istruzione index esattamente come le altre query. Il numero di CPU usate per eseguire una singola istruzione per gli indici è determinato dall'opzione di configurazione relativa al massimo grado di parallelismo, 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 di SQL Server rileva che il sistema è occupato, il grado di parallelismo dell'operazione dell'indice viene ridotto automaticamente prima dell'avvio dell'esecuzione dell'istruzione. 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. Per altre informazioni, vedere Guida sull'architettura di elaborazione delle query.

Note

Le operazioni parallele sugli indici non sono disponibili in ogni edizione di SQL Server. Per altre informazioni, vedere Edizioni e funzionalità supportate di SQL Server 2022.

Limitazioni

  • 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 sostituisce l'opzione di configurazione "max degree of parallelism" solo per la query che specifica questa opzione. Nella tabella seguente sono elencati i valori interi validi che possono essere specificati con l'opzione di configurazione max degree of parallelism e l'opzione di indicizzazione MAXDOP.

    Value Description
    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 viene eseguita in modo seriale.
    2-64 Limita il numero di processori al valore specificato. È possibile usare meno processori a seconda del 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 MAXDOP index si applicano alle istruzioni Transact-SQL seguenti:

  • L'opzione MAXDOP index 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.

Permissions

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

Usare SQL Server Management Studio

Impostare il massimo grado di parallelismo su un indice

  1. In Esplora oggetti, seleziona il segno più per espandere il database che contiene la tabella per la quale vuoi impostare il massimo grado di parallelismo su un indice.

  2. Espandere la cartella Tabelle .

  3. Selezionare il segno più per espandere la tabella in cui si desidera impostare il massimo grado di parallelismo per un indice.

  4. Espandi 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. Seleziona OK.

Usare Transact-SQL

Impostare il grado massimo di parallelismo su un indice esistente

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

  2. Sulla barra Standard selezionare Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra di query e selezionare Esegui. Questo codice modifica l'indice IX_ProductVendor_VendorID nella Purchasing.ProductVendor tabella in modo che, se il server dispone di otto o più processori, il motore di database limita l'esecuzione dell'operazione sull'indice a otto o meno processori.

    USE AdventureWorks2022;
    GO
    
    ALTER INDEX IX_ProductVendor_VendorID
        ON Purchasing.ProductVendor REBUILD WITH(MAXDOP = 8);
    GO
    

Per altre informazioni, vedere ALTER INDEX.

Specificare il massimo grado di parallelismo durante la creazione di un nuovo indice

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

  2. Sulla barra Standard selezionare Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra di query e selezionare Esegui.

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