Configurare max degree of parallelism (opzione di configurazione del server)
Si applica a: SQL Server
Questo articolo descrive come configurare l'opzione di configurazione del server max degree of parallelism
(MAXDOP) in SQL Server usando SQL Server Management Studio, Azure Data 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 informazioni più dettagliate sul limite impostato da max degree of parallelism
(MAXDOP), 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.
Nota
SQL Server 2019 (15.x) presenta raccomandazioni automatiche per l'impostazione dell'opzione di configurazione del server MAXDOP 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 e in Istanza gestita di SQL di Azure, l'impostazione MAXDOP predefinita per ogni nuovo database singolo, database del pool elastico e per ogni istanza gestita è 8. Nel database SQL di Azure la configurazione con ambito database MAXDOP è impostata su 8. In Istanza gestita di SQL di Azure l'opzione di configurazione del server max degree of parallelism
(MAXDOP) è impostata su 8.
Per altre informazioni su MAXDOP nel database SQL di Azure, vedere Configurare il massimo grado di parallelismo (MAXDOP) nel database SQL di Azure.
Prima di iniziare
Considerazioni
Questa opzione è avanzata e la relativa modifica è riservata ad amministratori di database esperti o a professionisti con certificazione per SQL Server.
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 del grado massimo di parallelismo (MAXDOP) su 0 consente a SQL Server di usare tutti i processori disponibili fino a un massimo di 64. 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
su1
. 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 dimax degree of parallelism
verrà ignorato.Il limite del massimo grado di parallelismo è impostato per ogni attività. Non è un limite per richiesta o per query. Questo significa che durante l'esecuzione di una query parallela, una singola richiesta può generare più attività fino al limite MAXDOP e ogni attività userà un solo ruolo di lavoro e una sola utilità di pianificazione. Per altre informazioni, vedere la sezione Pianificazione delle attività in parallelo in Guida sull'architettura dei thread e delle attività.
È possibile sostituire il valore di configurazione del server max degree of parallelism:
- A livello di query, usando l'hint per la query MAXDOP o l'hint di Query Store.
- A livello di database, con la configurazione con ambito database MAXDOP.
- A livello di carico di lavoro, con l'opzione di configurazione del gruppo di carico di lavoro di Resource Governor MAX_DOP.
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 altre 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 queste istruzioni utilizzando il flag di traccia 2528. Per altre informazioni, vedere Flag di traccia (Transact-SQL).
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).
Consigli
A partire da SQL Server 2016 (13.x), se, all'avvio del servizio, il motore di database rileva più di otto core fisici per ogni nodo o socket NUMA, vengono creati automaticamente nodi soft-NUMA per impostazione predefinita. Il motore di database inserisce processori logici dello stesso core fisico in nodi soft-NUMA diversi. Le raccomandazioni contenute nella tabella seguente consentono di mantenere tutti i thread di lavoro di una query parallela nello stesso nodo soft-NUMA. Questo comportamento permette di migliorare 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.
A partire da SQL Server 2016 (13.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 | Indicazioni |
---|---|---|
Server con un singolo nodo NUMA | Minore o uguale a otto processori logici | Mantenere MAXDOP uguale o inferiore al numero di processori logici |
Server con un singolo nodo NUMA | Più di otto processori logici | Mantenere MAXDOP su 8 |
Server con più nodi NUMA | Minore o uguale a 16 processori logici per nodo NUMA | Mantenere MAXDOP uguale o inferiore al numero di processori logici per nodo NUMA |
Server con più nodi NUMA | Più di 16 processori logici per nodo NUMA | Impostare per MAXDOP su un valore pari alla metà del numero di processori logici per nodo NUMA senza superare il valore MAX di 16 |
Nota
Per nodo NUMA nella tabella precedente si intende il nodo soft-NUMA creato automaticamente da SQL Server 2016 (13.x) e versioni successive oppure il nodo NUMA basato su hardware se soft-NUMA è stato 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 (Transact-SQL).
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 | Indicazioni |
---|---|---|
Server con un singolo nodo NUMA | Minore o uguale a otto processori logici | Mantenere MAXDOP uguale o inferiore al numero di processori logici |
Server con un singolo nodo NUMA | Più di otto processori logici | Mantenere MAXDOP su 8 |
Server con più nodi NUMA | Minore o uguale a otto processori logici per nodo NUMA | Mantenere MAXDOP uguale o inferiore al numero di processori logici per nodo NUMA |
Server con più nodi NUMA | Più di otto processori logici per nodo NUMA | Mantenere MAXDOP su 8 |
Sicurezza
Autorizzazioni
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, a un utente deve essere concessa l'autorizzazione a livello di server ALTER SETTINGS. L'autorizzazione ALTER SETTINGS è assegnata implicitamente ai ruoli predefiniti del server sysadmin e serveradmin .
Usare SQL Server Management Studio (SSMS) o Azure Data Studio
In Azure Data Studio installare l'estensione Database Admin Tool Extensions for Windows
o usare il metodo T-SQL seguente.
Configurare l’opzione del massimo grado di parallelismo
Queste opzioni modificano 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
Configurare l'opzione del massimo grado di parallelismo con T-SQL
Connettersi al motore di database con SQL Server Management Studio o Azure Data 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 parallelism
su16
.
USE AdventureWorks2022;
GO
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'max degree of parallelism', 16;
GO
RECONFIGURE WITH OVERRIDE;
GO
Per altre informazioni, vedere Opzioni di configurazione del server (SQL Server).
Completamento: Dopo la configurazione dell'opzione max degree of parallelism
L'impostazione diventa effettiva immediatamente senza dover riavviare il server.
Contenuto correlato
- Elaborazione di query intelligenti nei database SQL
- Guida sull'architettura di elaborazione delle query
- DBCC TRACEON - Flag di traccia (Transact-SQL)
- Hint di Query Store
- Hints (Transact-SQL) - Query
- Hint per la query USE HINT
- ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL)
- Opzione di configurazione del server affinity mask
- Opzioni di configurazione del server (SQL 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