Condividi tramite


Configurazione del server: soglia dei costi per il parallelismo

Si applica a:SQL ServerIstanza gestita di Azure SQL

Questo articolo descrive come configurare l'opzione di configurazione del cost threshold for parallelism server in SQL Server usando SQL Server Management Studio o Transact-SQL.

Informazioni sulla soglia dei costi per il parallelismo

L'opzione cost threshold for parallelism specifica la soglia in cui SQL Server considera i piani paralleli nei computer con più processori logici. L'opzione cost threshold for parallelism può essere impostata su qualsiasi valore compreso tra 0 e 32.767.

Il costo è la somma dei costi stimati dell'operatore in un piano di query, ad esempio CPU e I/O. Si tratta di una misura relativa usata solo per la selezione del piano; non misura il runtime effettivo.

Alcuni componenti Transact-SQL possono inibire un piano parallelo. Ad esempio, funzioni scalari non scalabili definite dall'utente (UDF), modifiche delle variabili di tabella e determinate chiamate di sistema. SQL Server valuta alternative parallele solo quando il costo stimato del piano seriale migliore supera il cost threshold for parallelism valore e potrebbe quindi scegliere un piano parallelo più economico.

Limiti

SQL Server ignora il cost threshold for parallelism valore nelle condizioni seguenti:

  • Il computer in uso è dotato di un solo processore.

  • Solo un singolo processore logico è disponibile per SQL Server a causa dell'opzione affinity mask di configurazione.

  • L'opzione max degree of parallelism di configurazione del server è impostata su 1.

Consigli

Questa opzione è un'opzione avanzata e deve essere modificata solo da un professionista esperto del database.

Il valore predefinito di 5 è un punto iniziale, non una raccomandazione. Nei sistemi SQL Server moderni, generarlo può essere utile per mantenere le query OLTP più piccole in esecuzione con piani seriali. Usare piccoli incrementi e osservare un ciclo di business completo prima di apportare ulteriori modifiche. Se necessario, eseguire il test dell'applicazione con valori superiori e inferiori per ottimizzare le prestazioni.

Annotazioni

Nel database SQL di Azure non è possibile impostare cost threshold for parallelism. Usare MAXDOP invece per controllare il parallelismo. Per altre informazioni, vedere Modifica di MAXDOP predefinito nel database SQL di Azure e in Istanza gestita di SQL di Azure.

In alcuni casi, è possibile scegliere un piano parallelo anche se il costo del piano della query è minore del valore corrente cost threshold for parallelism . La decisione di usare un piano parallelo o seriale si basa su una stima dei costi fornita in precedenza nel processo di ottimizzazione. Per altre informazioni, vedere Guida sull'architettura di elaborazione delle query.

Osservazioni:

Per verificare se l'opzione di configurazione del cost threshold for parallelism server è impostata su un valore troppo alto o troppo basso per il carico di lavoro, cercare gli indicatori seguenti.

Soglia dei costi per l'impostazione del parallelismo Description
Troppo basso - Troppe query con luce CPU vengono eseguite in parallelo.

- In Query Store molti piani sono is_parallel_plan impostati su 1.

- CXPACKET e CXCONSUMER dominano le statistiche relative al tipo di attesa. Potresti anche vedere THREADPOOL e SOS_SCHEDULER_YIELD aspettare.
Troppo alto - Le query con utilizzo elevato della CPU del carico di lavoro non sono sufficienti e l'utilizzo della CPU è superiore a quello ottimale di conseguenza.

- SOS_SCHEDULER_YIELD domina le statistiche relative al tipo di attesa.

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 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.

Usare SQL Server Management Studio

  1. In Esplora oggetti fare clic con il pulsante destro del mouse su un server e scegliere Proprietà.

  2. Selezionare il nodo Avanzate.

  3. In Parallelismo modificare l'opzione cost threshold for parallelism impostando il valore desiderato. Digitare o selezionare un valore compreso tra 0 e 32.767.

Usare Transact-SQL

In questo esempio viene illustrato come usare sp_configure per impostare il valore di cost threshold for parallelism su 20.

USE master;
GO

EXECUTE sp_configure 'show advanced options', 1;
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'cost threshold for parallelism', 20;
GO

RECONFIGURE;
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 cost threshold for parallelism

L'impostazione diventa effettiva immediatamente senza dover riavviare il server.