Opzione max degree of parallelism

Quando SQL Server viene eseguito in un computer con più microprocessori o CPU, viene automaticamente rilevato il grado di parallelismo migliore, ovvero il numero di processori utilizzati per eseguire una singola istruzione per l'esecuzione di ogni piano parallelo. È possibile utilizzare l'opzione max degree of parallelism per limitare il numero di processori da utilizzare per l'esecuzione di piani paralleli. Per consentire al server di determinare il grado massimo di parallelismo, impostare questa opzione su 0, ossia il valore predefinito. L'impostazione di grado massimo di parallelismo su 0 consente a SQL Server di utilizzare tutti i processori disponibili fino a 64 processori. Per eliminare la generazione di piani paralleli, impostare max degree of parallelism su 1. Impostare il valore su un numero maggiore di 1 per limitare il numero massimo di processori utilizzato per l'esecuzione di una singola query. Il valore massimo per l'impostazione del grado di parallelismo viene controllato in base all'edizione di SQL Server, al tipo di CPU e al sistema operativo. Se si specifica un valore maggiore di quello dei processori disponibili, viene utilizzato il numero effettivo di processori disponibili. Se il computer dispone di un unico processore, il valore di max degree of parallelism verrà ignorato.

Valore

Edizione di SQL Server

1

SQL Server Express

2

SQL Server Workgroup

4

SQL Server 2008 Web

4

SQL Server 2008 Standard

32

SQL Server 2008 Enterprise in esecuzione su sistemi operativi x86.

Override del valore di max degree of parallelism

SQL Server valuta i piani di esecuzione parallela per le query, le operazioni DDL (Data Definition Language) sugli indici e il popolamento dei cursori statici e gestiti da keyset. Per ulteriori informazioni sull'esecuzione parallela, vedere Grado di parallelismo.

È possibile sostituire il valore di max degree of parallelism nelle query specificando l'hint per la query MAXDOP nell'istruzione per la query. Per ulteriori informazioni, vedere Hint per la query (Transact-SQL).

Le operazioni tramite cui viene creato o ricompilato un indice o eliminato un indice cluster possono richiedere un elevato utilizzo di risorse. È possibile sostituire il valore di max degree of parallelism per le operazioni sugli indici specificando l'opzione per gli indici MAXDOP nell'istruzione per l'indice. Il valore MAXDOP viene applicato all'istruzione al momento dell'esecuzione e non viene archiviato nei metadati dell'indice. Per ulteriori informazioni, vedere Configurazione di operazioni parallele sugli indici.

Oltre al parallelismo delle query e delle operazioni sugli indici, questa opzione controlla anche il parallelismo dei controlli DBCC CHECKTABLE, DBCC CHECKDB e DBCC CHECKFILEGROUP. È possibile disabilitare i piani di esecuzione parallela per tali istruzioni utilizzando il flag di traccia 2528. Per ulteriori informazioni, vedere Flag di traccia (Transact-SQL).

Nota

Se l'opzione affinity mask non è impostata sul valore predefinito, il numero di processori disponibili per SQL Server in sistemi SMP (multiprocessori simmetrici, Symmetric Multiprocessor) potrebbe risultare ridotto.

Impostazione dell'opzione max degree of parallelism

L'opzione max degree of parallelism è un'opzione avanzata. Se si utilizza la stored procedure di sistema sp_configure per modificare l'impostazione, è possibile modificare max degree of parallelism solo quando il valore di show advanced options è impostato su 1. L'impostazione diventa effettiva immediatamente e non richiede il riavvio del servizio MSSQLSERVER.

Nell'esempio seguente l'opzione max degree of parallelism viene impostata su 8.

sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'max degree of parallelism', 8;
GO
RECONFIGURE WITH OVERRIDE;
GO

Per ulteriori informazioni sull'impostazione del valore di max degree of parallelism in SQL Server Management Studio, vedere Procedura: Configurazione del numero di processori disponibili per query parallele (SQL Server Management Studio).