Feedback sul grado di parallelismo (DOP)

Si applica a:SQL Server 2022 (16.x)

SQL Server 2022 (16.x) ha introdotto una nuova funzionalità chiamata Feedback sul grado di parallelismo (DOP) 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. Questo scenario consente di ottimizzare l'utilizzo delle risorse e migliorare la scalabilità dei carichi di lavoro, quando un parallelismo eccessivo può causare problemi di prestazioni.

Invece di affrontare le difficoltà di un'impostazione predefinita onnicomprensiva o della regolazione manuale per ogni query, il feedback sul grado di parallelismo adatta automaticamente il grado di parallelismo per evitare questi problemi.

Per altre funzionalità di feedback sulle query, vedere Feedback sulle concessioni di memoria e Feedback sulla stima della cardinalità (CE).

Il feedback sul grado di parallelismo (DOP) evita l'eccesso di parallelismo.

Invece di affrontare le difficoltà di un'impostazione predefinita onnicomprensiva o della regolazione manuale per ogni query, il feedback sul grado di parallelismo adatta automaticamente il grado di parallelismo per evitarne l’eccesso. Se l'uso del parallelismo è considerato inefficiente, il feedback del grado di parallelismo (DOP) riduce il grado di parallelismo per la successiva esecuzione della query, indipendentemente dal valore DOP configurato, e verifica se la riduzione ha migliorato l'efficienza.

Il parallelismo è spesso utile per la creazione di report e le query analitiche o per le query che gestiscono diversamente grandi quantità di dati. Al contrario, le query incentrate su OLTP che vengono eseguite in parallelo potrebbero riscontrare problemi di prestazioni quando il tempo trascorso per il coordinamento di tutti i thread supera i vantaggi dell'uso di un piano parallelo. Per altre informazioni, vedere la sezione relativa all'esecuzione parallela del piano.

  • Per abilitare il feedback sul grado di parallelismo, abilitare la configurazione con ambito del databaseDOP_FEEDBACK in un database.

  • Per disabilitare il feedback sul grado di parallelismo a livello di database, usare la configurazione con ambito databaseDOP_FEEDBACK. Ad esempio, nel database utente:

    ALTER DATABASE SCOPED CONFIGURATION SET DOP_FEEDBACK = OFF;
    
  • Per disabilitare il feedback sul grado di parallelismo a livello di query, usare l'hint di query DISABLE_DOP_FEEDBACK.

È necessario abilitare Query Store per ogni database in cui viene usato il feedback sul grado di parallelismo e nello stato "Lettura/Scrittura". Il feedback verrà mantenuto nella visualizzazione del catalogo sys.query_store_plan_feedback quando si raggiunge un valore stabile di feedback sul grado di parallelismo.

Il feedback sul grado di parallelismo è disponibile per le query che operano al livello di compatibilità del database 160, introdotte con SQL Server 2022 (16.x), o versioni successive.

Vengono mantenuti solo i feedback verificati. Se il grado di parallelismo modificato genera una regressione delle prestazioni, il feedback sul grado di parallelismo tornerà all'ultimo valore noto del grado di parallelismo. In questo contesto una query annullata dall'utente viene percepita anche come regressione. Il feedback sul grado di parallelismo non ricompila i piani.

Il feedback stabile viene verificato nuovamente al momento della ricompilazione del piano e può essere aumentato o ridotto, ma non supera mai il valore impostato per MAXDOP (incluso un hint MAXDOP).

A partire da SQL Server 2022 (16.x), quando è abilitato Query Store per le repliche secondarie, il feedback sul grado di parallelismo è anche compatibile con la replica per le repliche secondarie nei gruppi di disponibilità. Il feedback sul grado di parallelismo può comportarsi in modo diverso in una replica primaria e in una replica secondaria. Tuttavia, il feedback sul grado di parallelismo non viene mantenuto nelle repliche secondarie e, in caso di failover, il feedback sul grado di parallelismo della replica primaria precedente non viene applicato alla nuova replica primaria. In caso di failover, il feedback applicato alle repliche primarie o secondarie viene perso. Per altre informazioni, vedere Query Store per repliche secondarie.

Esecuzione del feedback sul grado di parallelismo (DOP)

Il feedback sul grado di parallelismo (DOP) identifica le inefficienze del parallelismo per la ripetizione delle query, in base al tempo trascorso e alle attese. Se l'uso del parallelismo è considerato inefficiente, il feedback sul grado di parallelismo riduce il grado di parallelismo per la successiva esecuzione della query, indipendentemente dal valore del grado di parallelismo configurato, e verifica se la riduzione ha migliorato l'efficienza.

Per valutare l'idoneità delle query, viene misurato il tempo trascorso della query modificato per alcune esecuzioni. Il tempo totale trascorso per ogni query viene modificato ignorando le attese del latch del buffer, le attese di I/O del buffer e quelle I/O di rete che non fanno parte dell'esecuzione di query parallele. L'obiettivo della funzionalità di feedback sul grado di parallelismo consiste nell'aumentare la concorrenza complessiva e ridurre significativamente le attese, anche se si aumenta leggermente il tempo trascorso.

Vengono mantenuti solo i feedback verificati. Se il grado di parallelismo modificato genera una regressione delle prestazioni, il feedback sul grado di parallelismo tornerà all'ultimo valore noto del grado di parallelismo. In questo contesto una query annullata dall'utente viene percepita anche come regressione.

Nota

Il feedback sul grado di parallelismo non ricompila i piani.

Considerazioni sul feedback sul grado di parallelismo (DOP)

Il valore minimo del grado di parallelismo per qualsiasi query modificata con il feedback sul grado di parallelismo è 2. Le esecuzioni seriali non rientrano nell'ambito del feedback sul grado di parallelismo.

È possibile tenere traccia delle informazioni sul feedback usando la visualizzazione del catalogo sys.query_store_plan_feedback.

Se una query dispone di un piano di query forzato tramite Query Store, è comunque possibile usare il feedback sul grado di parallelismo per tale query.

Al momento il feedback sul grado di parallelismo non è compatibile con gli hint per la query. Per altre informazioni, vedere Hint (Transact-SQL) - Query e Hint di Query Store.

Eventi estesi per il feedback sul grado di parallelismo (DOP)

Per il feedback sul grado di parallelismo (DOP) sono disponibili i seguenti XE:

  • dop_feedback_eligible_query: si verifica quando il piano di query diventa idoneo per il feedback sul grado di parallelismo. È possibile che si attivino altri eventi se si verifica una ricompilazione o un riavvio dell'istanza di SQL Server.
  • dop_feedback_provided: si verifica quando un feedback sul grado di parallelismo genera dati per una determinata query. Questo evento contiene statistiche di base quando il feedback viene generato per la prima volta e statistiche di feedback precedenti quando vengono forniti feedback successivi.
  • dop_feedback_validation: si verifica quando si verifica la convalida per le statistiche di runtime delle query rispetto a statistiche di base o a statistiche di feedback precedenti.
  • dop_feedback_stabilized: si verifica quando il feedback sul grado di parallelismo viene stabilizzato per una query.
  • dop_feedback_reverted: si verifica quando viene ripristinato un feedback sul grado di parallelismo. L'evento viene generato quando la convalida del feedback non riesce sul primo feedback generato. Il sistema ripristinerà di nuovo uno stato di feedback assente.
  • dop_feedback_analysis_stopped: si verifica quando l'analisi del feedback sul grado di parallelismo viene arrestata per una query.

Persistenza per feedback sul grado di parallelismo (DOP)

Si applica a: SQL Server, a partire da SQL Server 2022 (16.x)

Se il meccanismo di feedback sul grado di parallelismo rileva che il nuovo grado di parallelismo è valido, questa ottimizzazione viene mantenuta all'interno di Query Store e verrà applicata in modo appropriato a una query per le esecuzioni future.

Questa funzionalità è stata introdotta in SQL Server 2022 (16.x) ed è disponibile per le query che operano nel livello di compatibilità del database 160 o superiore oppure l'hint QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n 160 e versioni successive e quando Query Store è abilitato per il database ed è in uno stato di "lettura/scrittura".