Sdílet prostřednictvím


Inteligentní zpracování dotazů v databázích SQL

Platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Řada funkcí inteligentního zpracování dotazů (IQP) zahrnuje funkce s širokým dopadem, které zlepšují výkon stávajících úloh s minimálním úsilím implementace, které je potřeba přijmout. Následující obrázek podrobně popisuje řadu funkcí IQP a kdy byly poprvé zavedeny pro SQL Server. Všechny funkce IQP jsou dostupné v Azure SQL Managed Instance a Azure SQL Database. Některé funkce závisí na úrovni kompatibility databáze.

Diagram představující funkce v rodině inteligentního zpracování dotazů a kdy byly zavedeny v SQL Server.

V tomto videu najdete přehled inteligentního zpracování dotazů:

 

Ukázky a vzorový kód funkcí inteligentního zpracování dotazů (IQP) najdete v GitHub ukázkovém úložišti.

Úlohy můžete automaticky využít k inteligentnímu zpracování dotazů povolením příslušné úrovně kompatibility databáze pro databázi. Můžete to nastavit pomocí Transact-SQL. Například:

ALTER DATABASE [WideWorldImportersDW]
    SET COMPATIBILITY_LEVEL = 170;

Následující tabulka obsahuje podrobnosti o všech funkcích inteligentního zpracování dotazů spolu s požadavky, které mají pro úroveň kompatibility databáze. Podrobné informace o všech funkcích IQP, včetně poznámek k verzi a podrobnějších popisů, najdete v tématu Funkce inteligentního zpracování dotazů.

Funkce IQP pro Azure SQL Database a SQL Server 2025

Funkce IQP Podporováno v Azure SQL Database Podporováno v SQL Server 2025 (17.x) Description
Volitelná optimalizace plánu parametrů (OPPO) Ano, počínaje úrovní kompatibility databáze 170 Ano, počínaje SQL Server 2025 (17.x) s úrovní kompatibility databáze 170 Využívá infrastrukturu optimalizace adaptivního plánu (Multiplan), která byla zavedena s vylepšením optimalizace plánu citlivého na parametry (PSPO), která generuje více plánů z jednoho příkazu. Funkce může zvolit optimální plán za běhu na základě toho, jestli je NULL OR NOT NULLparametr , což zlepšuje výkon dotazů, které by jinak mohly být pro takové vzory dotazů neoptimální.
Zpětná vazba k odhadu kardinality (CE) pro výrazy Ano, počínaje úrovní kompatibility databáze 170 Ano, počínaje SQL Server 2025 (17.x) s úrovní kompatibility databáze 160 Rozšiřuje zpětnou vazbu CE, aby zlepšila odhad kardinality pro opakující se výrazy napříč dotazy tím, že se učí z předchozích spuštění a automaticky použije příslušné volby modelu CE pro budoucí spuštění těchto výrazů.
OPTIMIZED_SP_EXECUTESQL Yes Ano, počínaje SQL Server 2025 (17.x) Účinně snižte dopad náporu při kompilaci. Kompilační bouře je situace, kdy se současně kompiluje velký počet dotazů, což vede k problémům s výkonem a konfliktu zdrojů. Povolte tuto funkci, aby bylo možné, že vyvolání sp_executesql se chovají jako objekty, například uložené procedury a triggery, z pohledu kompilace.

Funkce IQP pro Azure SQL Database a SQL Server 2022

Funkce IQP Podporováno v Azure SQL Database Podporováno v SQL Server 2022 (16.x) a novějších verzích Description
Adaptivní spojení (režim batch) Ano, počínaje úrovní kompatibility databáze 140 Ano, počínaje SQL Server 2017 (14.x) s úrovní kompatibility databáze 140 Adaptivní spojení dynamicky vybírají typ spojení během běhu na základě skutečných vstupních řádků.
Přibližný počet jedinečných Yes Ano, počínaje SQL Server 2019 (15.x) Poskytněte přibližné COUNT DISTINCT řešení pro velké objemy dat s výhodou vysokého výkonu a nízkou paměťovou náročností.
Přibližný percentil Ano, počínaje úrovní kompatibility databáze 110 Ano, počínaje SQL Server 2022 (16.x) s úrovní kompatibility 110 Rychlé výpočty percentilů pro velkou datovou sadu s přijatelnými hranicemi chyb založených na pořadí, které pomáhají rychle rozhodovat pomocí přibližných agregačních funkcí percentilu.
Dávkový režim v úložišti řádků Ano, počínaje úrovní kompatibility databáze 150 Ano, počínaje SQL Server 2019 (15.x) s úrovní kompatibility 150 Poskytnout dávkové zpracování pro úlohy relačního datového skladu omezené procesorem bez použití indexů sloupcového úložiště.
zpětná vazba na odhad kardinality (CE) Ano, počínaje úrovní kompatibility databáze 160 Ano, počínaje SQL Server 2022 (16.x) s úrovní kompatibility 160 Automaticky upraví odhady kardinality pro opakující se dotazy a optimalizuje úlohy, u kterých neefektivní předpoklady CE způsobují nízký výkon dotazů. Zpětná vazba CE identifikuje a použije modelový předpoklad, který lépe vyhovuje danému dotazu a distribuci dat, aby se zlepšila kvalita plánu provádění dotazů.
Zpětná vazba na stupeň paralelismu (DOP) Ano, počínaje úrovní kompatibility databáze 160 Ano, počínaje úrovní kompatibility databáze 160 Automaticky upraví stupeň paralelismu pro opakující se dotazy, aby se optimalizovaly pro úlohy, kde neefektivní paralelismus může způsobit problémy s výkonem. Vyžaduje povolení Query Store.
Prokládání provádění Ano, počínaje úrovní kompatibility databáze 140 Ano, počínaje SQL Server 2017 (14.x) s úrovní kompatibility databáze 140 Použije skutečnou kardinalitu tabulkové funkce vyhodnocující více příkazů, která byla zjištěna při první kompilaci, místo pevně stanoveného odhadu.
Zpětná vazba k udělení paměti (režim Batch) Ano, počínaje úrovní kompatibility databáze 140 Ano, počínaje SQL Server 2017 (14.x) s úrovní kompatibility databáze 140 Pokud dotaz v dávkovém režimu obsahuje operace, které přetéknou na disk, přidejte další paměť pro po sobě jdoucí spuštění. Pokud dotaz promarní > 50% přidělené paměti, snižte velikost přidělení paměti pro následná spuštění.
Zpětná vazba k příspěvku paměti (režim řádkového zpracování) Ano, počínaje úrovní kompatibility databáze 150 Ano, počínaje SQL Server 2019 (15.x) s úrovní kompatibility databáze 150 Pokud dotaz v režimu řádku obsahuje operace, které přetéknou na disk, přidejte další paměť pro po sobě jdoucí spuštění. Pokud dotaz promarní > 50% přidělené paměti, snižte velikost přidělení paměti pro následná spuštění.
Zpětná vazba na přidělení paměti (Percentil) Ano, povoleno u všech databází Ano, počínaje verzí SQL Server 2022 (16.x)) s úrovní kompatibility databáze 140 Řeší stávající omezení u zpětné vazby na udělování paměti nerušivým způsobem tím, že začleňuje předchozí provádění dotazů pro upřesnění zpětné vazby.
Trvalost využití paměťové zpětné vazby Ano, povoleno u všech databází Ano, počínaje verzí SQL Server 2022 (16.x)) s úrovní kompatibility databáze 140 Poskytuje nové funkce pro zachování zpětné vazby k paměti. Vyžaduje povolení Query Store pro databázi a v režimu READ_WRITE.
Trvalost zpětné vazby CE Ano, počínaje úrovní kompatibility databáze 160 Ano, počínaje verzí SQL Server 2022 (16.x)) s úrovní kompatibility databáze 160 Vyžaduje povolení Query Store pro databázi a v režimu READ_WRITE.
Optimalizované plánování pomocí Query Store Yes Ano, počínaje SQL Server 2022 (16.x)). Snižuje náklady na kompilaci pro opakující se vynucené dotazy. Další informace najdete v tématu Optimalizované vynucení plánu s Query Store.
Vkládání skalárních UDF Ano, počínaje úrovní kompatibility databáze 150 Ano, počínaje SQL Server 2019 (15.x) s úrovní kompatibility databáze 150 Skalární funkce definované uživatelem se transformují na ekvivalentní relační výrazy, které jsou "vložené" do volajícího dotazu, což často vede k významným nárůstům výkonu.
Optimalizace plánu citlivého na parametry Ano, počínaje úrovní kompatibility databáze 160 Ano, počínaje SQL Server 2022 (16.x) s úrovní kompatibility databáze 160 Optimalizace plánu citlivého parametru řeší scénář, kdy jeden plán uložený v mezipaměti parametrizovaného dotazu není optimální pro všechny možné příchozí hodnoty parametrů, například ne uniformní distribuce dat.
Odložená kompilace proměnné tabulky Ano, počínaje úrovní kompatibility databáze 150 Ano, počínaje SQL Server 2019 (15.x) s úrovní kompatibility databáze 150 Použije skutečnou kardinalitu proměnné tabulky, ke které došlo při první kompilaci, místo pevného odhadu.

Funkce IQP pro Azure SQL Managed Instance

Funkce IQP Podporováno v Azure SQL Managed Instance Description
Adaptivní spojení (režim batch) Ano, počínaje úrovní kompatibility databáze 140 Adaptivní spojení dynamicky vybírají typ spojení během běhu na základě skutečných vstupních řádků.
Přibližný počet jedinečných Yes Poskytněte přibližné COUNT DISTINCT řešení pro velké objemy dat s výhodou vysokého výkonu a nízkou paměťovou náročností.
Přibližný percentil Ano, počínaje úrovní kompatibility databáze 110 Rychlé výpočty percentilů pro velkou datovou sadu s přijatelnými hranicemi chyb založených na pořadí, které pomáhají rychle rozhodovat pomocí přibližných agregačních funkcí percentilu.
Dávkový režim v úložišti řádků Ano, počínaje úrovní kompatibility databáze 150 Poskytnout dávkové zpracování pro úlohy relačního datového skladu omezené procesorem bez použití indexů sloupcového úložiště.
zpětná vazba na odhad kardinality (CE) Ano, počínaje úrovní kompatibility databáze 160 Automaticky upraví odhady kardinality pro opakující se dotazy a optimalizuje úlohy, u kterých neefektivní předpoklady CE způsobují nízký výkon dotazů. Zpětná vazba CE identifikuje a použije modelový předpoklad, který lépe vyhovuje danému dotazu a distribuci dat, aby se zlepšila kvalita plánu provádění dotazů.
Zpětná vazba k odhadu kardinality (CE) pro výrazy Ano, počínaje úrovní kompatibility databáze 160 v Azure SQL Managed Instance s SQL Server 2025 nebo Always-up-to-dateupdate policy. Ne, pro zásady aktualizace SQL Server 2022. Rozšiřuje zpětnou vazbu CE, aby zlepšila odhad kardinality pro opakující se výrazy napříč dotazy tím, že se učí z předchozích spuštění a automaticky použije příslušné volby modelu CE pro budoucí spuštění těchto výrazů.
Zpětná vazba na stupeň paralelismu (DOP) Ano, počínaje úrovní kompatibility databáze 160 v Azure SQL Managed Instance s SQL Server 2025 nebo Always-up-to-dateupdate policy. Ne, pro zásady aktualizace SQL Server 2022. Automaticky upraví stupeň paralelismu pro opakující se dotazy, aby se optimalizovaly pro úlohy, kde neefektivní paralelismus může způsobit problémy s výkonem. Vyžaduje povolení Query Store.
Prokládání spouštění Ano, počínaje úrovní kompatibility databáze 140 Použije skutečnou kardinalitu tabulkové funkce vyhodnocující více příkazů, která byla zjištěna při první kompilaci, místo pevně stanoveného odhadu.
Zpětná vazba k udělení paměti (režim Batch) Ano, počínaje úrovní kompatibility databáze 140 Pokud dotaz v dávkovém režimu obsahuje operace, které přetéknou na disk, přidejte další paměť pro po sobě jdoucí spuštění. Pokud dotaz promarní > 50% přidělené paměti, snižte velikost přidělení paměti pro následná spuštění.
Zpětná vazba k příspěvku paměti (režim řádkového zpracování) Ano, počínaje úrovní kompatibility databáze 150 Pokud dotaz v režimu řádku obsahuje operace, které přetéknou na disk, přidejte další paměť pro po sobě jdoucí spuštění. Pokud dotaz promarní > 50% přidělené paměti, snižte velikost přidělení paměti pro následná spuštění.
Zpětná vazba na přidělení paměti (Percentil) Ano, počínaje úrovní kompatibility databáze 160 Řeší stávající omezení u zpětné vazby na udělování paměti nerušivým způsobem tím, že začleňuje předchozí provádění dotazů pro upřesnění zpětné vazby.
Trvalost zpětné vazby k paměti, CE a DOP Ano, počínaje úrovní kompatibility databáze 160 Poskytuje nové funkce pro zachování zpětné vazby k paměti. Zpětná vazba k CE a DOP je vždy uchována. Vyžaduje povolení Query Store pro databázi a v režimu READ_WRITE.
Volitelná optimalizace plánu parametrů (OPPO) Ano, počínaje úrovní kompatibility databáze 170 v Azure SQL Managed Instance s SQL Server 2025 nebo aktualizační politikou Always-up-to-date. Ne, pro zásady aktualizace SQL Server 2022. Využívá infrastrukturu optimalizace adaptivního plánu (Multiplan), která byla zavedena s vylepšením optimalizace plánu citlivého na parametry (PSPO), která generuje více plánů z jednoho příkazu. Funkce může zvolit optimální plán za běhu na základě toho, jestli je NULL OR NOT NULLparametr , což zlepšuje výkon dotazů, které by jinak mohly být pro takové vzory dotazů neoptimální.
Optimalizované plánování pomocí Query Store Ne Snižuje náklady na kompilaci pro opakující se vynucené dotazy. Další informace najdete v tématu Optimalizované vynucení plánu s Query Store.
Optimalizace plánu citlivého na parametry Ano, počínaje úrovní kompatibility databáze 160 Optimalizace plánu citlivosti parametru řeší scénář, kdy jeden plán uložený v mezipaměti parametrizovaného dotazu není optimální pro všechny možné příchozí hodnoty parametrů, například ne uniformní distribuce dat.
Vkládání skalárních UDF Ano, počínaje úrovní kompatibility databáze 150 Skalární funkce definované uživatelem se transformují na ekvivalentní relační výrazy, které jsou "vložené" do volajícího dotazu, což často vede k významným nárůstům výkonu.
Odložená kompilace proměnné tabulky Ano, počínaje úrovní kompatibility databáze 150 Použije skutečnou kardinalitu proměnné tabulky, ke které došlo při první kompilaci, místo pevného odhadu.

Funkce IQP pro SQL Server 2019

Funkce IQP Podporováno v SQL Server 2019 (15.x) Description
Adaptivní spojení (režim batch) Ano, počínaje SQL Server 2017 (14.x) s úrovní kompatibility databáze 140 Adaptivní spojení dynamicky vybírají typ spojení během běhu na základě skutečných vstupních řádků.
Přibližný počet jedinečných Yes Poskytněte přibližné COUNT DISTINCT řešení pro velké objemy dat s výhodou vysokého výkonu a nízkou paměťovou náročností.
Dávkový režim v úložišti řádků Ano, počínaje úrovní kompatibility databáze 150 Poskytnout dávkové zpracování pro úlohy relačního datového skladu omezené procesorem bez použití indexů sloupcového úložiště.
Prokládání provádění Ano, počínaje úrovní kompatibility databáze 140 Místo pevného odhadu použijte skutečnou kardinalitu vícepříkazové tabulkové funkce zjištěnou při první kompilaci.
Zpětná vazba k udělení paměti (režim Batch) Ano, počínaje úrovní kompatibility databáze 140 Pokud dotaz v dávkovém režimu obsahuje operace, které přetéknou na disk, přidejte další paměť pro po sobě jdoucí spuštění. Pokud dotaz promarní > 50% přidělené paměti, snižte velikost přidělení paměti pro následná spuštění.
Zpětná vazba k příspěvku paměti (režim řádkového zpracování) Ano, počínaje úrovní kompatibility databáze 150 Pokud dotaz v režimu řádku obsahuje operace, které přetéknou na disk, přidejte další paměť pro po sobě jdoucí spuštění. Pokud dotaz promarní > 50% přidělené paměti, snižte velikost přidělení paměti pro následná spuštění.
Vkládání skalárních UDF Ano, počínaje úrovní kompatibility databáze 150 Skalární funkce definované uživatelem se transformují na ekvivalentní relační výrazy, které jsou "vložené" do volajícího dotazu, což často vede k významným nárůstům výkonu.
Odložená kompilace proměnné tabulky Ano, počínaje úrovní kompatibility databáze 150 Místo pevného odhadu použijte skutečnou kardinalitu proměnné tabulky, která byla zjištěna při první kompilaci.

Funkce IQP pro SQL Server 2017

Funkce IQP Podporováno v SQL Server 2017 (14.x) Description
Adaptivní spojení (režim batch) Ano, počínaje SQL Server 2017 (14.x) s úrovní kompatibility databáze 140 Adaptivní spojení dynamicky vybírají typ spojení během běhu na základě skutečných vstupních řádků.
Přibližný počet jedinečných Yes Poskytněte přibližné COUNT DISTINCT řešení pro velké objemy dat s výhodou vysokého výkonu a nízkou paměťovou náročností.
Prokládání provádění Ano, počínaje úrovní kompatibility databáze 140 Místo pevného odhadu použijte skutečnou kardinalitu vícepříkazové tabulkové funkce zjištěnou při první kompilaci.
Zpětná vazba k udělení paměti (režim Batch) Ano, počínaje úrovní kompatibility databáze 140 Pokud dotaz v dávkovém režimu obsahuje operace, které přetéknou na disk, přidejte další paměť pro po sobě jdoucí spuštění. Pokud dotaz promarní > 50% přidělené paměti, snižte velikost přidělení paměti pro následná spuštění.

požadavek na Query Store

Několik funkcí inteligentního zpracování dotazů vyžaduje, aby byl Query Store povolen, aby to bylo přínosem pro uživatelskou databázi. Pokud chcete povolit Query Store, přečtěte si téma Enable Query Store.

Funkce IQP Vyžaduje povolení Query Store a READ_WRITE
Adaptivní spojení (režim batch) No
Přibližný počet jedinečných No
Přibližný percentil No
Dávkový režim v úložišti řádků No
zpětná vazba na odhad kardinality (CE) Yes
Zpětná vazba na stupeň paralelismu (DOP) Yes
Prokládání provádění No
Zpětná vazba k udělení paměti (režim Batch) No
Zpětná vazba k příspěvku paměti (režim řádkového zpracování) No
Zpětná vazba k přidělení paměti (percentilový a persistentní režim) Yes
Optimalizované plánování pomocí Query Store Yes
Vkládání skalárních UDF No
Optimalizace plánu citlivého na parametry Ne, ale doporučeno
Odložená kompilace proměnné tabulky No