Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: Platí pro: SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
SQL databáze v Microsoft Fabric
Nepřesné odhady kardinality často způsobují nízký výkon při optimalizaci dotazů. Zpětná vazba k odhadu kardinality pro výrazy rozšiřuje rámec zavedený funkcí zpětné vazby CE. Cílem je zlepšit odhad kardinality pro opakující se výrazy. Funkce zpětné vazby pro výrazy se učí z předchozích spuštění výrazů v rámci dotazů, aby našla vhodné volby modelu CE a aplikovala naučené při budoucích spuštěních těchto výrazů. Podobně jako zpětná vazba CE, se doporučení modelu testují a jsou automaticky aplikována na budoucí provedení dotazů.
Zpětná vazba pro funkci výrazů identifikuje a používá modelový předpoklad, který lépe odpovídá výrazu daného dotazu a distribuci dat, což zase zlepšuje kvalitu plánu provádění dotazů. Funkce zpětné vazby pro výrazy dokáže v současné době identifikovat plánovací operátory, kde se odhadovaný počet řádků a skutečný počet řádků velmi liší. Zpětná vazba se použije u výrazů v rámci dotazu, když dojde k významným chybám odhadu modelu, a existuje realizovatelný alternativní model, který se má vyzkoušet.
Různé verze databázového stroje používají různé předpoklady modelu CE na základě způsobu distribuce a dotazování dat.
Použijte zpětnou vazbu CE pro výrazy
CE Feedback pro výrazy monitoruje spouštění dotazů a identifikuje dílčí výrazy, které vedou k nesprávným odhadům kardinality. Zpětná vazba se generuje na základě pozorovaných vzorů a používá se během kompilace dotazů, aby se zlepšila přesnost odhadu.
Požadavky a konfigurace
Pokud chcete použít CE Feedback for Expressions, musí být splněny následující požadavky:
- Databáze musí používat úroveň kompatibility 160 nebo novější.
- Konfigurace
CE_FEEDBACK_FOR_EXPRESSIONSs oborem databáze musí být povolená (ve výchozím nastavení je povolená). - Kontrola aktuálního stavu konfigurace s vymezeným oborem databáze:
SELECT name,
value,
value_for_secondary
FROM sys.database_scoped_configurations
WHERE name = 'CE_FEEDBACK_FOR_EXPRESSIONS';
Tuto funkci můžete povolit v databázi pomocí následujícího konfiguračního příkazu s oborem databáze:
ALTER DATABASE SCOPED CONFIGURATION SET CE_FEEDBACK_FOR_EXPRESSIONS = ON;
Pokud chcete zakázat funkci zpětné vazby pro výrazy v databázi, zakažte konfiguraci s rozsahem databáze CE_FEEDBACK_FOR_EXPRESSIONS.
ALTER DATABASE SCOPED CONFIGURATION SET CE_FEEDBACK_FOR_EXPRESSIONS = OFF;
Jak to funguje
I když otisky prstů nejsou novým konceptem databázového stroje SQL Serveru, otisk prstu v kontextu zpětné vazby funkce výrazů odkazuje na kombinaci vypočítaných podpisů z výrazu. Například obchodní analytik fiktivní firmy může chtít získat informace o objednávkách libovolného zákazníka, kde tito zákazníci strávili více než 10 000 USD. Příkaz select, který zahrnuje shromažďování dat z tabulky Zákazníci, která se také připojuje k tabulce Objednávky, může být jedním ze způsobů, jak zobrazit tento typ dat:
SELECT *
FROM Customer AS C
INNER JOIN Orders AS O
ON C.custkey = O.o_custkey
WHERE O.o_totalprice > 10000;
Pro tento dotaz se optimalizátor dotazů může rozhodnout získat data z každé tabulky – Customera následně Ordersvybrat všechny přidružené sloupce z obou tabulek a spojit data (s filtrem), kde totalpricehodnota objednávky je větší než 10 000 USD.
Každý logický výraz, například filtr nebo spojení v rámci plánu dotazu, generuje podpis, který přispívá k otisku prstu. Zpětná vazba CE na výrazy využívá tyto otisky prstů k učení a aplikaci zpětné vazby do dotazů, které sdílejí podobné dílčí výrazy, i když se struktura dotazu liší.
Tato funkce se zaměřuje na výrazy s konzistentním přeceňováním nebo podceňováním kardinality v rámci dotazů. Analyzuje dva různé vzory úloh, které aktuálně nemají nárok na zpětnou vazbu CE:
Úlohy bez opakovaných spuštění, ale s opakovanými výrazovými vzory. Například běžně používaný vzor spojení.
Dotazy, ve kterých může jedna část dotazu těžit z jiného modelu CE než jiné části stejného dotazu. Například spojení mezi tabulkami
AaBmůže vyžadovat jednoduché uzavření a spojení mezi tabulkamiCaD, které mohou vyžadovat základní uzavření.
Funkce zpětné vazby pro výrazy využívá filtrační a spojovací předpoklady k opravě chybného odhadu, například:
Filters:
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATESASSUME_PARTIAL_CORRELATION_FOR_FILTER_ESTIMATESASSUME_FULL_INDEPENDENCE_FOR_FILTER_ESTIMATES
Joins:
ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS- Předpoklad základního zamezení (nesmí být předána žádná nápověda)
Tyto předpoklady odrážejí různé strategie modelu CE, jako je například omezení a nezávislost. Další koncepční pozadí najdete v tématu Vysvětlení odhadu kardinality zpětné vazby od Katy Smithové a Odhad kardinality pro korelované sloupce v SQL Serveru 2016.
Životní cyklus tipů
Tipy pro zpětnou vazbu procházejí následujícími stavy:
- Monitorování: Systém zaznamenává opakovaná spuštění dílčího výrazu a zjišťuje, zda chybný odhad kardinality přetrvává.
- Použití: Pokud chybné odhady pokračují, může být během kompilace dotazu vygenerována a použita zpětnovazební nápověda k úpravě modelu CE.
- Blokováno: Pokud použitý tip vede k neoptimálnímu odhadu kardinality, bude zablokováno budoucí použití.
Tento životní cyklus zajišťuje, že zpětná vazba se použije pouze v případě, že je přínosná a zabraňuje regresi v odhadní kvalitě.
Regresní ochrana
Zpětná vazba CE pro výrazy zahrnuje ochranu proti regresi. Pokud tip způsobí horší odhad kardinality než předtím, zablokuje se. Tato ochrana je však omezena na odhad kardinality a nevyhodnocuje dobu provádění dotazů. U regresí souvisejících se spouštěním/modulem runtime může automatická oprava plánu zasahovat. Pokud funkce automatické opravy plánu není povolená, akce, které by funkce provedla, se zaznamenávají a jsou k dispozici dotazováním sys.dm_db_tuning_recommendations zobrazení dynamické správy.
Telemetrie a monitorování
Aktivita CE Feedback pro výrazy může být monitorována pomocí následujících nástrojů:
- Rozšířené události:
adhoc_ce_feedback_query_level_telemetryquery_adhoc_ce_feedback_expression_hintquery_adhoc_ce_feedback_hint
Rozšířené události CE Feedback query_ce_feedback_begin_analysis a query_ce_feedback_telemetry mohou být také užitečné při sledování aktivity funkce.
Data otisků prstů se ukládají do mezipaměti ve vyhrazeném správci paměti s názvem
AdHocCEFeedbackCache. K této mezipaměti lze přistupovat prostřednictvím zobrazenísys.dm_exec_ce_feedback_cachekatalogu systému .Integrace Showplanu
Při použití zpětné vazby CE pro nápovědu k výrazům obsahuje plán dotazu atribut v Showplan XML. Tato značka označuje, že zpětná vazba byla použita k úpravě odhadu kardinality pro konkrétní dílčí výraz.
Mezipaměť a perzistence
Trvalá zpětná vazba je uložená v interní tabulce úložiště dotazů (sys.plan_persist_ce_feedback_for_expressions) a znovu se načte při spuštění. Tím je zajištěno, že systém nemusí znovu zpracovat zpětnou vazbu pro otisky prstů, se kterými se již setkal. Mechanismus uchovávání mezipaměti je ztrátový, což znamená, že zpětná vazba se ukládá na disk pouze periodicky. Frekvence trvalosti není momentálně konfigurovatelná.
Pokud se instance SQL Serveru restartuje nebo paměť vymaže před dalším cyklem perzistence, může dojít ke ztrátě zpětné vazby vygenerované od posledního uložení.
Limitations
Trvalost není v současné době dostupná pro úložiště dotazů u čitelných sekundárních souborů. Zpětná vazba CE pro výrazy může být u primární a sekundární repliky použita odlišně. Zpětná vazba se ale neuchovává na sekundárních replikách a v tomto scénáři existuje pouze v mezipaměti založené na paměti. Pokud dojde k události přepnutí při selhání, ztratí se zpětná vazba, která byla získána na některé z čitelných sekundárních replik.
Související obsah
- odhad kardinality (CE) zpětné vazby