Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:Gäller för: SQL Server 2025 (17.x) Förhandsversion
Azure SQL Database
SQL-databas i Microsoft Fabric Förhandsversion
Felaktiga kardinalitetsuppskattningar orsakar ofta dåliga prestanda under frågeoptimering. Feedback om kardinalitetsuppskattning (CE) för uttryck utökar ramverket som startades av CE-feedbackfunktionen. Målet är att förbättra kardinalitetsuppskattningarna för upprepade uttryck. Återkopplingsfunktionen för uttryck lär sig från tidigare exekveringar av uttryck i frågeställningar, för att hitta lämpliga val av CE-modeller och tillämpa det lärda på framtida exekveringar av dessa uttryck. Precis som CE-feedback testas och tillämpas modellrekommendationer automatiskt på framtida frågeexekveringar.
Feedbacken för uttrycksfunktionen identifierar och använder ett modellantagande som bättre passar en viss frågas uttryck och datadistribution, vilket i sin tur förbättrar frågekörningsplanens kvalitet. För närvarande kan feedbacken för uttrycksfunktionen identifiera planoperatorer där det uppskattade antalet rader och det faktiska antalet rader skiljer sig mycket åt. Feedback tillämpas på uttryck i en fråga när betydande modelluppskattningsfel inträffar och det finns en fungerande alternativ modell att prova.
Olika versioner av databasmotorn använder olika CE-modellantaganden , baserat på hur data distribueras och efterfrågas.
Använd CE-feedback för uttryck
CE-feedback för uttryck övervakar frågekörningar och identifierar underuttryck som konsekvent leder till felbedömning av kardinalitet. Feedback genereras baserat på observerade mönster och tillämpas under frågekompilering för att förbättra uppskattningsprecisionen.
Krav och konfiguration
Om du vill använda CE-feedback för uttryck måste följande krav uppfyllas:
- Databasen måste använda kompatibilitetsnivå 160 eller senare.
- Konfigurationen
CE_FEEDBACK_FOR_EXPRESSIONSmed databasomfattning måste vara aktiverad (aktiverad som standard). - Så här kontrollerar du den aktuella statusen för den databasomfångsbegränsade konfigurationen:
SELECT name,
value,
value_for_secondary
FROM sys.database_scoped_configurations
WHERE name = 'CE_FEEDBACK_FOR_EXPRESSIONS';
Funktionen kan aktiveras på en databas med följande konfigurationskommando för databasomfattning:
ALTER DATABASE SCOPED CONFIGURATION SET CE_FEEDBACK_FOR_EXPRESSIONS = ON;
Om du vill inaktivera feedbackfunktionen för uttryck för en databas, inaktiverar du den databasspecifika konfigurationen CE_FEEDBACK_FOR_EXPRESSIONS.
ALTER DATABASE SCOPED CONFIGURATION SET CE_FEEDBACK_FOR_EXPRESSIONS = OFF;
Så här fungerar det
Fingeravtryck är inte ett nytt begrepp med SQL Server Database Engine, men ett fingeravtryck i samband med feedbacken för uttrycksfunktionen refererar till kombinationen av beräknade signaturer inifrån ett uttryck. Till exempel kan en affärsanalytiker i ett fiktivt företag vilja få information om någon av sina kunders beställningar där dessa kunder spenderade mer än $ 10,000. En select-instruktion som omfattar insamling av data från en kundtabell som också ansluter till en ordertabell kan vara ett sätt att visa den här typen av data:
SELECT *
FROM Customer AS C
INNER JOIN Orders AS O
ON C.custkey = O.o_custkey
WHERE O.o_totalprice > 10000;
För den här frågan kan frågeoptimeraren välja att hämta data från varje tabell – Customerföljt av Orders, välja alla associerade kolumner från båda tabellerna och koppla data (med ett filter) där orderordningen totalprice är större än 10 000 USD.
Varje logiskt uttryck, till exempel ett filter eller en koppling i en frågeplan, genererar en signatur som bidrar till ett fingeravtryck. CE-feedback för uttryck använder dessa fingeravtryck för att lära sig och använda feedback för frågor som delar liknande underuttryck, även om den övergripande frågestrukturen skiljer sig.
Funktionen fokuserar på uttryck med konsekvent kardinalitetsöverskattning/underskattning mellan frågor. Den analyserar två olika arbetsbelastningsmönster som för närvarande inte är berättigade till CE-feedback:
Arbetsbelastningar utan upprepade körningar, men med upprepade uttrycksmönster. Till exempel ett vanligt kopplingsmönster.
Frågor där en del av frågan kan dra nytta av en annan CE-modell än en annan del av samma fråga. Till exempel kan kopplingen mellan tabeller
AochBkräva enkel inneslutning och kopplingen mellan tabellerCochD, som kan kräva grundläggande inneslutning.
Feedbacken för uttrycksfunktionen tillämpar filter- och kopplingsantaganden för att korrigera felestimateringsproblem, till exempel:
Filters:
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATESASSUME_PARTIAL_CORRELATION_FOR_FILTER_ESTIMATESASSUME_FULL_INDEPENDENCE_FOR_FILTER_ESTIMATES
Joins:
ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS- Grundläggande inneslutningsantagande (inget tips ska behöva skickas)
Dessa antaganden återspeglar olika CE-modellstrategier, till exempel inneslutning och oberoende. Mer konceptuell bakgrund finns i Feedback om kardinalitetsuppskattning förklarad av Kate Smith och kardinalitetsuppskattning för korrelerade kolumner i SQL Server 2016.
Tipslivscykel
Feedback antyder förlopp genom följande tillstånd:
- Övervakning: Systemet observerar upprepade körningar av underuttryck och spårar om kardinalitetsfelbedömningen fortsätter.
- Tillämpning: Om felberäkningen fortsätter kan ett feedbacktips genereras och tillämpas under frågekompilering för att justera CE-modellen.
- Blockerad: Om det tillämpade tipset resulterar i en suboptimal kardinalitetsuppskattning blockeras den från framtida användning.
Den här livscykeln säkerställer att feedback endast tillämpas när det är fördelaktigt och undviker regression i uppskattningskvaliteten.
Regressionsskydd
CE-feedback för uttryck innehåller regressionsskydd. Om ett tips orsakar en sämre kardinalitetsuppskattning än tidigare blockeras den. Det här skyddet är dock begränsat till kardinalitetsuppskattning och utvärderar inte exekveringstiden för frågor. För körning/körningshantering relaterade regressioner kan automatisk plankorrigering ingripa. Om funktionen för automatisk plankorrigering inte är aktiverad, registreras de åtgärder som funktionen skulle vidta och är tillgängliga genom att göra en förfrågning i den dynamiska hanteringsvyn sys.dm_db_tuning_recommendations.
Telemetri och övervakning
CE-feedback för uttrycksaktivitet kan övervakas med hjälp av följande verktyg:
- Utökade händelser:
adhoc_ce_feedback_query_level_telemetryquery_adhoc_ce_feedback_expression_hintquery_adhoc_ce_feedback_hint
CE Feedback utökade händelser query_ce_feedback_begin_analysis och query_ce_feedback_telemetry kan också vara användbara när du spårar funktionens aktivitet.
Fingeravtrycksdata cachelagras i en dedikerad minnestjänsteman med namnet
AdHocCEFeedbackCache. Den här cachen kan nås via systemkatalogvynsys.dm_exec_ce_feedback_cache.Showplan-integrering
När en CE-feedback för uttryckstips tillämpas innehåller frågeplanen ett
CardinalityFeedbackattribut i Showplan XML. Den här taggen anger att feedback användes för att justera kardinalitetsuppskattningen för en specifik underuttryck.
Cache och beständighet
Bevarad feedback lagras i en intern Query Store-tabell (sys.plan_persist_ce_feedback_for_expressions) och laddas om vid start. Detta säkerställer att systemet inte behöver lära om feedback för fingeravtryck som det redan har påträffat. Mekanismen för cachepersistence är av natur förlustig, vilket innebär att återkoppling endast sparas till disken periodiskt. Frekvensen för beständighet kan för närvarande inte konfigureras.
Om SQL Server-instansen startas om eller minnet rensas före nästa beständighetscykel kan feedback som genererats sedan den senaste tömningen gå förlorad.
Limitations
Persistens är för närvarande inte tillgänglig för Query Store på läsbara sekundärer. CE-feedback för uttryck kan tillämpa feedback på olika sätt på en primär replik och på en sekundär replik. Feedbacken sparas dock inte på sekundära repliker och finns bara i den minnesbaserade cachen i det scenariot. Om en failover-händelse inträffar går feedback som hade lärts in på någon av de läsbara sekundärerna förlorad.
Relaterat innehåll
- feedback om kardinalitetsuppskattning (CE)