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, inserimenti paralleli, operazioni ALTER COLUMN online, raccolta parallela delle statistiche e popolamento di cursori statici e basati su keyset.
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.
In Database SQL di Azure, nel database SQL in Fabric e in Istanza gestita di SQL di Azure, l'impostazione predefinita MAXDOP per ogni nuovo database singolo, database in 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 di max degree of parallelism su 0 consente a SQL Server di utilizzare tutti i processori disponibili fino a un massimo di 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 ulteriori informazioni, vedere la sezione Pianificazione di attività parallele nella guida all'architettura di thread e attività.
È possibile ignorare il valore di configurazione del server relativo al grado massimo di parallelismo:
- A livello di query, utilizzando il
MAXDOPsuggerimento di query o i suggerimenti di Query Store. - A livello di database, utilizzando la
MAXDOPconfigurazione con ambito a livello di database. - A livello del 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 sovrascrivere il valore del grado massimo di parallelismo per le operazioni sugli indici specificando l'opzione di indice MAXDOP nell'istruzione dell'indice. 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 affronta l'uso non ottimale del parallelismo nelle query ripetute. 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 mirano 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 elaborazione 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 pari o inferiore al 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 pari o inferiore al numero di processori logici per 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.
Applicare le stesse linee guida quando si imposta l'opzione del grado massimo di parallelismo per i 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 pari o inferiore al 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 pari o inferiore al numero di processori logici per 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 il MAXDOP per l'istanza.
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
È possibile connettersi a un'istanza di SQL Server usando qualsiasi strumento client di SQL Server familiare, ad esempio sqlcmd, SQL Server Management Studio (SSMS) o l'estensione MSSQL per Visual Studio Code.
Copiare e incollare l'esempio seguente in una finestra di query e selezionare Esegui. In questo esempio si illustra come utilizzare sp_configure per configurare l'opzione max degree of parallelism su 16.
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.
Passaggio successivo: Dopo aver configurato l'opzione del grado massimo di parallelismo
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)
- Suggerimenti di Query Store
- Indicazioni per query (Transact-SQL)
- Hint per la query USE HINT
- ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL)
- 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à
- sys.sp_configure (Transact-SQL)
- Impostare le opzioni di indice
- Feedback sul grado di parallelismo (DOP)
- RECONFIGURE (Transact-SQL)
- Monitoraggio e ottimizzazione delle prestazioni
- Configurare operazioni parallele sugli indici