Configurazione di operazioni a indici paralleli

Nei computer multiprocessore sui quali è in esecuzione Microsoft SQL Server 2005 Enterprise Edition, le istruzioni di indice possono utilizzare più processori per eseguire le operazioni di analisi e di ordinamento associate all'istruzione, così come fanno gli altri tipi di query. Il numero di processori utilizzati per l'esecuzione di una singola istruzione di indice è determinato dall'opzione di configurazione max degree of parallelism oltre che dal carico di lavoro corrente. L' opzione max degree of parallelism consente di limitare il numero di processori da utilizzare nell'esecuzione di piani paralleli. Se in Motore di database di SQL Server 2005 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.

[!NOTA] Le operazioni parallele sugli indici sono supportate solo in SQL Server 2005 Enterprise Edition.

Il numero di processori utilizzati da Query Optimizer implica normalmente le prestazioni ottimali. Tuttavia, operazioni come la creazione, la ricostruzione 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 di processori utilizzati per eseguire l'istruzione di indice specificando l'opzione di indice MAXDOP e 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. Nella tabella seguente sono elencati 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

Utilizza il numero effettivo di processori disponibili in base al carico di lavoro corrente del sistema. 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

Quando si utilizza l'opzione di indice MAXDOP sono valide tutte le regole semantiche utilizzate con l'opzione di configurazione max degree of parallelism. Per ulteriori informazioni, vedere Opzione max degree of parallelism.

Quando si esegue ALTER INDEX REORGANIZE con o senza LOB_COMPACTION, il valore di max degree of parallelism è un'operazione a thread singolo. L'opzione di indice MAXDOP non può essere specificata nell'istruzione ALTER INDEX REORGANIZE.

Operazioni di indice in linea

Le operazioni di indice in linea consentono l'attività utente simultanea durante l'operazione di indice. È possibile utilizzare l'opzione MAXDOP per controllare il numero di processori dedicati all'operazione di indice in linea. In questo modo, è possibile raggiungere un equilibrio tra risorse utilizzate dall'operazione di indice e dagli utenti simultanei. Per ulteriori informazioni, vedere Esecuzione di operazioni in linea su indici.

Operazioni relative all'indice di partizione

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 generazione. Maggiori i gradi di parallelismo, maggiori i requisiti di memoria. Per ulteriori informazioni, vedere Linee guida specifiche per gli indici partizionati.

Esempi

Nell'esempio seguente viene creato l'indice IX_ProductVendor_VendorID sulla tabella ProductVendor e impostata l'opzione max degree of parallelism su 8. Supponendo che il server disponga di almeno otto processori, Motore di database limiterà l'esecuzione dell'operazione di indice a un massimo di otto processori.

USE AdventureWorks;
GO
IF EXISTS (SELECT name FROM sys.indexes
            WHERE name = N'IX_ProductVendor_VendorID')
    DROP INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor;
GO
CREATE INDEX IX_ProductVendor_VendorID 
ON Purchasing.ProductVendor (VendorID)
WITH (MAXDOP=8);
GO

Vedere anche

Concetti

Elaborazione parallela di query

Altre risorse

ALTER INDEX (Transact-SQL)
ALTER TABLE (Transact-SQL)
CREATE INDEX (Transact-SQL)
DROP INDEX (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005