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:Si applica a: SQL Server 2025 (17.x)
Database SQL di Azure
Istanza gestita di Azure SQL
Database SQL in Microsoft Fabric
Le stime di cardinalità imprecise spesso causano prestazioni scarse durante l'ottimizzazione delle query. Il feedback della stima della cardinalità (CE) per le espressioni estende il framework avviato dalla funzionalità di feedback CE. L'obiettivo è migliorare le stime della cardinalità per le espressioni ripetute. La funzionalità di retrofeedback per le espressioni apprende dalle esecuzioni precedenti di espressioni all'interno delle query, per trovare le scelte appropriate del modello CE e applicare ciò che è stato appreso alle esecuzioni future di tali espressioni. Analogamente al feedback di CE, le raccomandazioni dei modelli vengono testate e applicate automaticamente alle esecuzioni delle query future.
Il feedback per la funzionalità delle espressioni identifica e utilizza un'ipotesi di modello più adeguata all'espressione e alla distribuzione dei dati di una determinata query, migliorando così la qualità del piano di esecuzione delle query. Attualmente, la funzionalità di feedback delle espressioni può identificare gli operatori del piano in cui il numero stimato di righe e il numero effettivo di righe sono molto diversi. Il feedback viene applicato alle espressioni all'interno di una query quando si verificano errori significativi di stima del modello ed è disponibile un modello alternativo valido da provare.
Versioni diverse del motore di database usano presupposti di modello ce diversi , in base al modo in cui i dati vengono distribuiti e sottoposti a query.
Utilizzare il feedback CE per le espressioni
Il feedback sul calcolo della cardinalità (CE) per le espressioni monitora le esecuzioni delle query e identifica le sottoespressioni che comportano costantemente una misstima della cardinalità. Il feedback viene generato in base ai modelli osservati e applicati durante la compilazione delle query per migliorare l'accuratezza della stima.
Prerequisiti e configurazione
Per usare il "CE Feedback" per le Espressioni, è necessario soddisfare i seguenti prerequisiti:
- Il database deve usare il livello di compatibilità 160 o versione successiva.
- La
CE_FEEDBACK_FOR_EXPRESSIONSconfigurazione con ambito database deve essere abilitata (abilitata per impostazione predefinita). - Per controllare lo stato corrente della configurazione a livello di database:
SELECT name,
value,
value_for_secondary
FROM sys.database_scoped_configurations
WHERE name = 'CE_FEEDBACK_FOR_EXPRESSIONS';
La funzionalità può essere abilitata in un database con il comando di configurazione con ambito database seguente:
ALTER DATABASE SCOPED CONFIGURATION SET CE_FEEDBACK_FOR_EXPRESSIONS = ON;
Per disabilitare il feedback per la funzionalità delle espressioni per un database, disabilitare la configurazione a livello di database CE_FEEDBACK_FOR_EXPRESSIONS:
ALTER DATABASE SCOPED CONFIGURATION SET CE_FEEDBACK_FOR_EXPRESSIONS = OFF;
Come funziona
Anche se le impronte digitali non sono un nuovo concetto con il motore di database di SQL Server, un'impronta digitale nel contesto della funzionalità di feedback per le espressioni fa riferimento alla combinazione delle firme calcolate dall'interno di un'espressione. Ad esempio, un business analyst in un'azienda fittizia potrebbe voler ottenere informazioni su uno qualsiasi degli ordini dei clienti in cui tali clienti hanno speso più di $ 10.000. Un'istruzione select che prevede la raccolta di dati da una tabella Customers che viene unita anche a una tabella Orders può essere un modo per visualizzare questo tipo di dati:
SELECT *
FROM Customer AS C
INNER JOIN Orders AS O
ON C.custkey = O.o_custkey
WHERE O.o_totalprice > 10000;
Per questa query, Query Optimizer potrebbe scegliere di ottenere dati da ogni tabella, Customerseguita da Orders, selezionare tutte le colonne associate da entrambe le tabelle e unire i dati (con un filtro) in cui l'oggetto totalprice di un ordine è maggiore di $10.000.
Ogni espressione logica, ad esempio un filtro o un join all'interno di un piano di query, genera una firma che contribuisce a un'impronta digitale. Feedback CE per le espressioni usa queste impronte digitali per apprendere e applicare feedback tra query che condividono sottoespressioni simili, anche se la struttura complessiva delle query è diversa.
La funzionalità è incentrata sulle espressioni che presentano una sovra- o sottostima della cardinalità coerente in tutte le query. Analizza due modelli di carico di lavoro diversi che non sono attualmente idonei per il feedback ce:
Carichi di lavoro senza esecuzioni ripetute, ma con modelli di espressione ripetuti. Ad esempio, un modello di join comunemente usato.
Query in cui una parte della query può trarre vantaggio da un modello CE diverso rispetto a un'altra parte della stessa query. Ad esempio, il join tra tabelle
AeBpotrebbe richiedere un contenimento semplice e il join tra tabelleCeD, che potrebbe richiedere il contenimento di base.
La funzionalità di feedback sulle espressioni applica assunzioni di filtro e join per correggere i problemi di stima errata, ad esempio:
Filters:
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATESASSUME_PARTIAL_CORRELATION_FOR_FILTER_ESTIMATESASSUME_FULL_INDEPENDENCE_FOR_FILTER_ESTIMATES
Joins:
ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS- Assunto di contenimento di base (non deve essere passata alcuna indicazione)
Questi presupposti riflettono diverse strategie del modello ce, ad esempio il contenimento e l'indipendenza. Per altre informazioni concettuali, vedere Feedback sulla stima della cardinalità spiegato da Kate Smith e stima della cardinalità per le colonne correlate in SQL Server 2016.
Ciclo di vita dei suggerimenti
I feedback avanzano attraverso le fasi seguenti:
- Monitoraggio: il sistema osserva esecuzioni ripetute di una sottoespressione e tiene traccia delle eventuali persistenti stime errate della cardinalità.
- Applicazione di: se l'errata stima continua, è possibile generare e applicare un suggerimento di feedback durante la compilazione delle query per regolare il modello CE.
- Bloccato: se l'hint applicato restituisce una stima della cardinalità non ottimale, viene impedito l'uso futuro.
Questo ciclo di vita garantisce che il feedback venga applicato solo quando utile ed evita la regressione nella qualità della stima.
Protezione della regressione
Il feedback CE per le espressioni comprende la protezione dalla regressione. Se un suggerimento causa una stima della cardinalità peggiore di prima, viene bloccato. Tuttavia, questa protezione è limitata alla stima della cardinalità e non valuta il tempo di esecuzione della query. Per le regressioni correlate al tempo di esecuzione, la correzione automatica dei piani potrebbe intervenire. Se la funzionalità di correzione automatica dei piani non è abilitata, le azioni che verrebbero eseguite dalla funzionalità sono registrate e rese disponibili mediante query sulla vista di gestione dinamica sys.dm_db_tuning_recommendations.
Telemetria e monitoraggio
È possibile monitorare il feedback CE dell'attività Espressioni usando gli strumenti seguenti:
- Eventi estesi:
adhoc_ce_feedback_query_level_telemetryquery_adhoc_ce_feedback_expression_hintquery_adhoc_ce_feedback_hint
Gli eventi estesi di CE Feedback query_ce_feedback_begin_analysis e query_ce_feedback_telemetry possono essere utili anche per monitorare l'attività della funzionalità.
I dati delle impronte digitali vengono memorizzati nella cache in un clerk dedicato di memoria denominato
AdHocCEFeedbackCache. È possibile accedere a questa cache tramite la vistasys.dm_exec_ce_feedback_cachedel catalogo di sistema .Integrazione di Showplan
Quando viene applicato un feedback CE per l'hint delle espressioni, il piano di query include un attributo
CardinalityFeedbacknel Showplan XML. Questo tag indica che il feedback è stato usato per regolare la stima della cardinalità per una sottoespressione specifica.
Cache e persistenza
Il feedback persistente viene archiviato in una tabella interna di Query Store (sys.plan_persist_ce_feedback_for_expressions) e ricaricato all'avvio. In questo modo il sistema non deve rileggere il feedback per le impronte digitali già incontrate. Il meccanismo di persistenza della cache è di natura persa, ovvero il feedback viene mantenuto solo su disco periodicamente. La frequenza di persistenza non è attualmente configurabile.
Se l'istanza di SQL Server riavvia o la memoria viene cancellata prima del ciclo di persistenza successivo, il feedback generato dopo l'ultimo scaricamento può essere perso.
Limitations
La funzionalità di persistenza non è attualmente disponibile per il Query Store sulle repliche secondarie leggibili. Il feedback ce per le espressioni può applicare feedback in modo diverso in una replica primaria e in una replica secondaria. Tuttavia, il feedback non viene salvato in modo permanente nelle repliche secondarie ed esiste solo all'interno della cache basata sulla memoria in tale scenario. Se si verifica un evento di failover, il feedback appreso in una delle repliche secondarie leggibili viene perso.