Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Questo articolo descrive come configurare l'opzione di configurazione del max degree of parallelism server (MAXDOP) in SQL Server usando SQL Server Management Studio o Transact-SQL. Quando un'istanza di SQL Server viene eseguita in un computer con più microprocessori o CPU, il motore di database rileva se è possibile usare il parallelismo. Il grado di parallelismo imposta il numero di processori utilizzati per eseguire una singola istruzione per ogni esecuzione di piani paralleli. È possibile utilizzare l'opzione max degree of parallelism per limitare il numero di processori da utilizzare per l'esecuzione di piani paralleli. Per altri dettagli sul limite impostato da max degree of parallelism, vedere la sezione Considerazioni in questa pagina. SQL Server valuta i piani di esecuzione parallela per query, operazioni DDL (Data Definition Language) sugli indici, inserimento parallelo, modifica colonna online, raccolta di statistiche parallela e popolamento dei cursori gestiti da keyset e statici.
SQL Server 2019 (15.x) ha introdotto raccomandazioni automatiche per impostare l'opzione max degree of parallelism di configurazione del server in base al numero di processori disponibili durante il processo di installazione. L'interfaccia utente del programma di installazione consente di accettare le impostazioni consigliate o di immettere valori personalizzati. Per altre informazioni, vedere Pagina Configurazione del motore di database - MaxDOP.
Nel database SQL di Azure, nel database SQL di Fabric e in Istanza gestita di SQL di Azure, l'impostazione predefinita per ogni MAXDOP database singolo, database del pool elastico e istanza gestita è .8 Nel database SQL di Azure e nel database SQL in Fabric, la configurazione con ambito database MAXDOP è impostata su 8. In Istanza gestita di SQL di Azure l'opzione di configurazione del max degree of parallelism server è impostata su 8.
Per altre informazioni sul MAXDOP database SQL di Azure o sul database SQL in Fabric, vedere Configurare il massimo grado di parallelismo (MAXDOP) nel database SQL di Azure e nel database SQL di Fabric.
Considerations
Questa opzione è un'opzione avanzata e deve essere modificata solo da un professionista esperto del database.
Se l'opzione Affinity Mask non è impostata sul valore predefinito, il numero di processori disponibili per SQL Server in sistemi SMP (Symmetric Multiprocessor) potrebbe risultare ridotto.
L'impostazione max degree of parallelism su consente a 0 SQL Server di usare tutti i processori disponibili fino a 64 processori. Tuttavia, questo non è il valore consigliato per la maggior parte dei casi. Per altre informazioni sui valori consigliati per max degree of parallelism, vedere la sezione Raccomandazioni in questa pagina.
Per eliminare la generazione di piani paralleli, impostare max degree of parallelism su 1. Impostare il valore su un numero compreso tra 1 e 32.767 per specificare il numero massimo di core del processore che può essere usato durante l'esecuzione di una singola query. Se il 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.
Il limite del massimo grado di parallelismo è impostato per ogni attività. Non è un limite per richiesta o per query. Ciò significa che durante un'esecuzione di query parallela, una singola richiesta può generare più attività fino al MAXDOP limite e ogni attività usa un ruolo di lavoro e un'utilità di pianificazione. Per altre informazioni, vedere la sezione Pianificazione di attività parallele nella guida all'architettura di thread e attività.
È possibile sostituire il valore di configurazione del server max degree of parallelism:
- A livello di query, usando l'hint
MAXDOPquery o gli hint di Query Store. - A livello di database, usando la
MAXDOPconfigurazione con ambito database. - A livello di carico di lavoro, usando l'opzione
MAX_DOPdi un gruppo di carico di lavoro di Resource Governor.
Le operazioni tramite cui viene creato o ricompilato un indice o eliminato un indice cluster possono richiedere un elevato utilizzo di risorse. È possibile eseguire l'override del valore max degree of parallelism per le operazioni sugli indici specificando l'opzione MAXDOP index nell'istruzione index. Il MAXDOP valore viene applicato all'istruzione in fase di esecuzione e non viene archiviato nei metadati dell'indice. Per altre informazioni, vedere Configurazione di operazioni parallele sugli indici.
Oltre alle query e alle operazioni sugli indici, questa opzione controlla anche il parallelismo di DBCC CHECKTABLE, DBCC CHECKDBe DBCC CHECKFILEGROUP. È possibile disabilitare i piani di esecuzione paralleli per queste istruzioni usando il flag di trace 2528. Per altre informazioni, vedere flag di traccia 2528.
SQL Server 2022 (16.x) ha introdotto Feedback sul grado di parallelismo (DOP), una nuova funzionalità per migliorare le prestazioni delle query identificando le inefficienze del parallelismo nella ripetizione delle query, in base al tempo trascorso e alle attese. Il feedback sul grado di parallelismo fa parte della famiglia di funzionalità di elaborazione intelligente delle query e indirizza l'utilizzo secondario del parallelismo per ripetere le query. Per informazioni sul feedback sul DOP, vedere Feedback sul grado di parallelismo (DOP).
Recommendations
In SQL Server 2016 (13.x) e versioni successive, durante l'avvio del servizio se il motore di database rileva più di otto core fisici per nodo O socket NUMA all'avvio, i nodi soft-NUMA vengono creati automaticamente per impostazione predefinita. Il motore di database inserisce processori logici dello stesso core fisico in nodi soft-NUMA diversi. Le raccomandazioni nella tabella seguente sono destinate a mantenere tutti i thread di lavoro di una query parallela all'interno dello stesso nodo soft-NUMA. Ciò migliora le prestazioni delle query e la distribuzione dei thread di lavoro tra i nodi NUMA per il carico di lavoro. Per altre informazioni, vedere Soft-NUMA (SQL Server).
In SQL Server 2016 (13.x) e versioni successive usare le linee guida seguenti quando si configura il valore di configurazione del max degree of parallelism server:
| Configurazione del server | Numero di processori | Guidance |
|---|---|---|
| Server con un singolo nodo NUMA | Minore o uguale a otto processori logici | Mantenere MAXDOP o sotto il numero di processori logici |
| Server con un singolo nodo NUMA | Più di otto processori logici | Mantieni MAXDOP a 8 |
| Server con più nodi NUMA | Minore o uguale a 16 processori logici per nodo NUMA | Mantenere MAXDOP o sotto il numero di processori logici per ogni nodo NUMA |
| Server con più nodi NUMA | Più di 16 processori logici per nodo NUMA | Mantenere MAXDOP a metà il numero di processori logici per nodo NUMA con un valore MAX pari a 16 |
Il nodo NUMA nella tabella precedente fa riferimento ai nodi soft-NUMA creati automaticamente da SQL Server 2016 (13.x) e versioni successive oppure ai nodi NUMA basati su hardware se soft-NUMA è disabilitato.
Usare le stesse linee guida quando si imposta l'opzione max degree of parallelism per gruppi di carico di lavoro di Resource Governor. Per altre informazioni, vedere CREATE WORKLOAD GROUP.
SQL Server 2014 e versioni precedenti
Da SQL Server 2008 (10.0.x) a SQL Server 2014 (12.x), usare le linee guida seguenti quando si configura il valore di configurazione del server max degree of parallelism:
| Configurazione del server | Numero di processori | Guidance |
|---|---|---|
| Server con un singolo nodo NUMA | Minore o uguale a otto processori logici | Mantenere MAXDOP o sotto il numero di processori logici |
| Server con un singolo nodo NUMA | Più di otto processori logici | Mantieni MAXDOP a 8 |
| Server con più nodi NUMA | Minore o uguale a otto processori logici per nodo NUMA | Mantenere MAXDOP o sotto il numero di processori logici per ogni nodo NUMA |
| Server con più nodi NUMA | Più di otto processori logici per nodo NUMA | Mantieni MAXDOP a 8 |
Permissions
Le autorizzazioni di esecuzione per sp_configure senza alcun parametro o solo con il primo parametro vengono assegnate per impostazione predefinita a tutti gli utenti. Per eseguire sp_configure con entrambi i parametri per la modifica di un'opzione di configurazione o per l'esecuzione dell'istruzione RECONFIGURE, a un utente deve essere concessa l'autorizzazione a livello di server ALTER SETTINGS. L'autorizzazione ALTER SETTINGS è assegnata implicitamente ai ruoli predefiniti del serversysadmin e serveradmin.
Usa SQL Server Management Studio
Queste opzioni modificano l'oggetto MAXDOP per l'istanza di .
In Esplora oggetti fare clic con il pulsante destro del mouse sull'istanza desiderata e selezionare Proprietà.
Selezionare il nodo Avanzate.
Nella casella Max Degree of Parallelism selezionare il numero massimo di processori da utilizzare nell'esecuzione di piani paralleli.
Usare Transact-SQL
Connettersi al motore di database con SQL Server Management Studio.
Nella barra Standard selezionare Nuova query.
Copiare e incollare l'esempio seguente nella finestra di query e selezionare Esegui. In questo esempio si illustra come utilizzare sp_configure per configurare l'opzione
max degree of parallelismsu16.USE master; GO EXECUTE sp_configure 'show advanced options', 1; GO RECONFIGURE WITH OVERRIDE; GO EXECUTE sp_configure 'max degree of parallelism', 16; GO RECONFIGURE WITH OVERRIDE; GO EXECUTE sp_configure 'show advanced options', 0; GO RECONFIGURE; GO
Per altre informazioni, vedere Opzioni di configurazione del server.
Completamento: Dopo aver configurato l'opzione max degree of parallelism
L'impostazione diventa effettiva immediatamente senza dover riavviare il server.
Contenuti correlati
- Elaborazione di query intelligenti nei database SQL
- Guida sull'architettura di elaborazione delle query
- Impostare i flag di traccia con DBCC TRACEON (Transact-SQL)
- Hint di Query Store
- Hint per la query (Transact-SQL)
- Hint per la query USE HINT
- ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL) - Configurazione a livello di database (Transact-SQL)
- Opzione di configurazione del server affinity mask
- Opzioni di configurazione del server
- Guida sull'architettura di elaborazione delle query
- Guida sull'architettura dei thread e delle attività
- sp_configure (Transact-SQL)
- Impostare le opzioni di indice
- Feedback sul grado di parallelismo (DOP)
- RECONFIGURE (Transact-SQL)
- Monitoraggio e ottimizzazione delle prestazioni
- Configurazione di operazioni parallele sugli indici