Quando apportare modifiche alla soglia di costo per il parallelismo


10

Durante l'esame di un problema di prestazioni, ho visto un afflusso di CXPACKETS che suggeriva che avrei potuto guardare la soglia di costo per il parallelismo e forse il MAXDOP.

Prima di apportare modifiche drastiche al MAXDOP, ho seguito il consiglio di molti altri, incluso quello di @mrdenny nella risposta a CXPACKET Aspetta la sintonia delle prestazioni di SQL Server 2008 e la risposta di @ aron-Bertrand da Trattare con CXPACKET attende - impostazione della soglia di costo per parallelismo . Ho aggiunto alla manutenzione per aggiornare completamente le statistiche su base notturna. Sembra una mossa sensata.

Tuttavia, apportare modifiche alla soglia di costo è ancora qualcosa che mi disturba.

A che punto dovrebbe essere modificata la soglia di costo per il parallelismo? Qualcuno ha un esempio di dove (dopo aver esaminato il costo delle loro query e carico di lavoro) hanno apportato modifiche a questo costo?

Si scusa se questo è qualcosa a cui è stata data una risposta in una domanda precedente.

Grazie!

Risposte:


3

L'uso di MAXDOP = 1 può essere d'aiuto, ma è un grosso problema. È possibile che il problema reale sia l'utilità degli indici. Forse un indice nuovo o diverso risolverebbe il problema.

In seguito ai commenti di Denny e Aaron Bertrand, hai scoperto quali altre attese al riguardo erano probabilmente la causa dell'attesa di CXPACKET?

Jonathan Kehayias ha suggerito una domanda che potrebbe aiutarti a valutare la tua esperienza di parallelismo e a prendere una decisione più ponderata. Ma dovresti anche leggere la conversazione tra Jonathan e Paul White.

https://www.sqlskills.com/blogs/jonathan/tuning-cost-threshold-for-parallelism-from-the-plan-cache/


1

Ti suggerirei di esaminare prima le impostazioni di MAXDOP poiché l'impostazione predefinita 0 (usa tutti i thread disponibili) potrebbe essere pericolosa poiché una query in fuga che consuma tutti i thread disponibili porterà alla fame di thread.

Fare riferimento alla mia risposta qui per come calcolare l'impostazione MAXDOP per l'istanza del server.

La soglia di costo del parallelismo si riferisce a quale deve essere il costo minimo della query prima che il parallelismo venga considerato dall'ottimizzatore.

Ricorda che le attese di CXPACKET sono solo sintomi dovuti a qualcosa che non va in relazione a statistiche scadute da query o indice mancante che risulta in un piano errato o diverso.

È possibile utilizzare sys.dm_exec_cached_planse sys.dm_exec_query_planDMV per estrarre informazioni dalla cache del piano come descritto in Ottimizzazione della "soglia di costo per il parallelismo" dalla cache del piano di Jonathan e Soglia di costo per il parallelismo .

Suggerirei di mantenere l' cost threshold for parallelismimpostazione predefinita, a meno che non abbiate esaurito le query di ottimizzazione delle risorse, eseguendo la manutenzione di indici e statistiche e verificate se non vi sono indici mancanti che la vostra query potrebbe trarne beneficio.

Nota: l'impostazione Maxdop può essere applicata anche a livello di query utilizzando il OPTION (MAXDOP n)quale sovrascriverà l'impostazione a livello di server.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.