Dela via


Intelligent frågebearbetning i SQL-databaser

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Förhandsversion av Microsoft Fabric

Funktionsfamiljen intelligent frågebearbetning (IQP) innehåller funktioner med bred inverkan som förbättrar prestandan för befintliga arbetsbelastningar med minimal implementering. Följande bild beskriver familjen med IQP-funktioner och när de först introducerades för SQL Server. Alla IQP-funktioner är tillgängliga i Azure SQL Managed Instance och Azure SQL Database. Vissa funktioner beror på databasens kompatibilitetsnivå.

Diagram över den intelligenta frågebearbetningsfamiljen med funktioner och när de först introducerades för SQL Server.

Titta på den här videon för en översikt över intelligent frågebearbetning:

 

Demonstrationer och exempelkod för IQP-funktioner (intelligent frågebearbetning) finns på GitHub https://aka.ms/IQPDemos.

Du kan göra arbetsbelastningar automatiskt berättigade till intelligent frågebearbetning genom att aktivera den tillämpliga databaskompatibilitetsnivån för databasen. Du kan ange detta med Transact-SQL. Till exempel:

ALTER DATABASE [WideWorldImportersDW]
    SET COMPATIBILITY_LEVEL = 170;

Följande tabell beskriver alla intelligenta frågebearbetningsfunktioner, tillsammans med eventuella krav som de har för databasens kompatibilitetsnivå. Fullständig information om alla IQP-funktioner, inklusive viktig information och mer djupgående beskrivningar, finns i Intelligenta frågebearbetningsfunktioner i detalj.

IQP-funktioner för Förhandsversion av Azure SQL Database och SQL Server 2025

IQP-funktion Stöds i Azure SQL Database Stöds i SQL Server 2025 (17.x) Förhandsversion Description
Valfri optimering av parameterplan (OPPO) No Ja, från och med SQL Server 2025 (17.x) Förhandsversion med kompatibilitetsnivå 170 Utnyttjar infrastrukturen för anpassningsbar planoptimering (Multiplan) som introducerades med pspo-förbättringen (Parameter Sensitive Plan Optimization), som genererar flera planer från en enda instruktion. Funktionen kan välja en optimalare plan under körning baserat på om en parameter är NULL OR NOT NULL, vilket förbättrar prestandan för frågor som annars skulle prestera suboptimalt för sådana frågemönster.
Feedback om kardinalitetsestimering (CE) för uttryck No Ja, från och med SQL Server 2025 (17.x) Förhandsversion med kompatibilitetsnivå 160 Utökar CE-feedback för att förbättra kardinalitetsuppskattningar för upprepade uttryck mellan frågor genom att lära sig från tidigare körningar och automatiskt tillämpa lämpliga CE-modellval för framtida körningar av dessa uttryck
OPTIMIZED_SP_EXECUTESQL Yes Ja, från och med förhandsversionen av SQL Server 2025 (17.x) Minska effektivt effekten av kompileringsstormar. En kompileringsstorm är en situation där ett stort antal frågor kompileras samtidigt, vilket leder till prestandaproblem och resurskonkurrets. Aktivera den här funktionen för att tillåta att anrop av sp_executesql beter sig som objekt, till exempel lagrade procedurer och utlösare ur ett kompilationsperspektiv.

IQP-funktioner för Azure SQL Database och SQL Server 2022

IQP-funktion Stöds i Azure SQL Database Stöds i SQL Server 2022 (16.x) och senare versioner Description
Anpassningsbara kopplingar (Batch-läge) Ja, från och med databaskompatibilitetsnivå 140 Ja, från och med SQL Server 2017 (14.x) med databaskompatibilitetsnivå 140 Anpassningsbara kopplingar väljer dynamiskt en kopplingstyp under körningstid baserat på faktiska inmatningsrader.
Ungefärlig räkning av distinkta element Yes Ja, från och med SQL Server 2019 (15.x) Ange ungefärligt COUNT DISTINCT för stordatascenarier med fördelen med höga prestanda och ett lågt minnesfotavtryck.
Ungefärlig percentil Ja, från och med databaskompatibilitetsnivå 110 Ja, från och med SQL Server 2022 (16.x) med kompatibilitetsnivå 110 Beräkna snabbt percentiler för en stor datamängd med acceptabla rankningsbaserade felgränsningar för att fatta snabba beslut med hjälp av ungefärliga percentilaggregatfunktioner.
Batchläge på radlagring Ja, från och med databaskompatibilitetsnivå 150 Ja, från och med SQL Server 2019 (15.x) med kompatibilitetsnivå 150 Ange batchläge för CPU-bundna relationsbaserade DW-arbetsbelastningar utan att behöva kolumnlagringsindex.
feedback om kardinalitetsuppskattning (CE) Ja, från och med databaskompatibilitetsnivå 160 Ja, från och med SQL Server 2022 (16.x) med kompatibilitetsnivå 160 Justerar automatiskt kardinalitetsuppskattningar för upprepade frågor för att optimera arbetsbelastningar där ineffektiva CE-antaganden orsakar dåliga frågeprestanda. CE-feedback identifierar och använder ett modellantagande som bättre passar en viss fråga och datadistribution för att förbättra frågekörningsplanens kvalitet.
grad av parallellitet (DOP) feedback Ja, från och med databaskompatibilitetsnivå 160 Ja, från och med databaskompatibilitetsnivå 160 Justerar automatiskt graden av parallellitet för upprepade frågor för att optimera för arbetsbelastningar där ineffektiv parallellitet kan orsaka prestandaproblem. Kräver att Query Store är aktiverat.
Interfolierad exekvering Ja, från och med databaskompatibilitetsnivå 140 Ja, från och med SQL Server 2017 (14.x) med databaskompatibilitetsnivå 140 Använder den faktiska kardinaliteten för tabellvärdesfunktionen med flera instruktioner som påträffades vid den första kompileringen i stället för en fast gissning.
Feedback om minnesbidrag (Batch-läge) Ja, från och med databaskompatibilitetsnivå 140 Ja, från och med SQL Server 2017 (14.x) med databaskompatibilitetsnivå 140 Om en fråga i batchläge har operationer som spills till disken, lägg till mer minne för kommande körningar. Om en fråga slösar bort > 50% av det tilldelade minnesutrymmet, minska storleken på minnestilldelningen för efterföljande körningar.
Feedback om minnesåtergivning (radläge) Ja, från och med databaskompatibilitetsnivå 150 Ja, från och med SQL Server 2019 (15.x) med databaskompatibilitetsnivå 150 Om en fråga i radläge har åtgärder som spills till disk, lägg till mer minne för efterföljande körningar. Om en fråga slösar bort > 50% av det tilldelade minnesutrymmet, minska storleken på minnestilldelningen för efterföljande körningar.
Feedback om minnestilldelning (percentil) Ja, aktiverat på alla databaser Ja, från och med SQL Server 2022 (16.x)) med databaskompatibilitetsnivå 140 Åtgärdar existerande begränsningar för feedback om minnesallokering på ett diskret sätt genom att införliva tidigare frågeexekvering för att förbättra återkopplingen.
Beständighet av Memory Grant feedback Ja, aktiverat på alla databaser Ja, från och med SQL Server 2022 (16.x)) med databaskompatibilitetsnivå 140 Ger ny funktionalitet för att bibehålla feedback om minnestilldelning. Kräver att Query Store är aktiverat för databasen och i READ_WRITE läge.
CE-feedbackbeständighet Ja, från och med databaskompatibilitetsnivå 160 Ja, från och med SQL Server 2022 (16.x)) med databaskompatibilitetsnivå 160 Kräver att Query Store är aktiverat för databasen och i READ_WRITE läge.
Optimering av planstyrning med Query Store Yes Ja, från och med SQL Server 2022 (16.x)). Minskar kompileringskostnaderna för upprepade framtvingade frågor. Mer information finns i Optimerad plan framtvingas med Query Store.
Skalär användardefinierad funktion (UDF) inlining Ja, från och med databaskompatibilitetsnivå 150 Ja, från och med SQL Server 2019 (15.x) med databaskompatibilitetsnivå 150 Skalära UDF:er omvandlas till motsvarande relationella uttryck som infogas i den anropande frågan, vilket ofta resulterar i betydande prestandavinster.
optimering av parameterkänslig plan Ja, från och med databaskompatibilitetsnivå 160 Ja, från och med SQL Server 2022 (16.x) med databaskompatibilitetsnivå 160 Optimering av parameterkänslig plan adresserar scenariot där en enda cachelagrad plan för en parametriserad fråga inte är optimal för alla möjliga inkommande parametervärden, till exempel icke-enhetliga datadistributioner.
Uppskjuten kompilering av tabellvariabel Ja, från och med databaskompatibilitetsnivå 150 Ja, från och med SQL Server 2019 (15.x) med databaskompatibilitetsnivå 150 Använder den faktiska kardinaliteten för tabellvariabeln som påträffades vid den första kompilering i stället för en fast gissning.

IQP-funktioner för Azure SQL Managed Instance

IQP-funktion Stöds i Azure SQL Managed Instance Description
Anpassningsbara kopplingar (Batch-läge) Ja, från och med databaskompatibilitetsnivå 140 Anpassningsbara kopplingar väljer dynamiskt en kopplingstyp under körningstid baserat på faktiska inmatningsrader.
Ungefärlig räkning av distinkta element Yes Ange ungefärligt COUNT DISTINCT för stordatascenarier med fördelen med höga prestanda och ett lågt minnesfotavtryck.
Ungefärlig percentil Ja, från och med databaskompatibilitetsnivå 110 Beräkna snabbt percentiler för en stor datamängd med acceptabla rankningsbaserade felgränsningar för att fatta snabba beslut med hjälp av ungefärliga percentilaggregatfunktioner.
Batchläge på radlagring Ja, från och med databaskompatibilitetsnivå 150 Ange batchläge för CPU-bundna relationsbaserade DW-arbetsbelastningar utan att behöva kolumnlagringsindex.
feedback om kardinalitetsuppskattning (CE) Ja, från och med databaskompatibilitetsnivå 160 Justerar automatiskt kardinalitetsuppskattningar för upprepade frågor för att optimera arbetsbelastningar där ineffektiva CE-antaganden orsakar dåliga frågeprestanda. CE-feedback identifierar och använder ett modellantagande som bättre passar en viss fråga och datadistribution för att förbättra frågekörningsplanens kvalitet.
grad av parallellitet (DOP) feedback Ja, från och med databaskompatibilitetsnivå 160 i Azure SQL Managed Instance med SQL Server 2025 eller alltid aktuelluppdateringspolicy. Nej, för SQL Server 2022-uppdateringsprincipen. Justerar automatiskt graden av parallellitet för upprepade frågor för att optimera för arbetsbelastningar där ineffektiv parallellitet kan orsaka prestandaproblem. Kräver att Query Store är aktiverat.
Interfolierad exekvering Ja, från och med databaskompatibilitetsnivå 140 Använder den faktiska kardinaliteten för tabellvärdesfunktionen med flera instruktioner som påträffades vid den första kompileringen i stället för en fast gissning.
Feedback om minnesbidrag (Batch-läge) Ja, från och med databaskompatibilitetsnivå 140 Om en fråga i batchläge har operationer som spills till disken, lägg till mer minne för kommande körningar. Om en fråga slösar bort > 50% av det tilldelade minnesutrymmet, minska storleken på minnestilldelningen för efterföljande körningar.
Feedback om minnesåtergivning (radläge) Ja, från och med databaskompatibilitetsnivå 150 Om en fråga i radläge har åtgärder som spills till disk, lägg till mer minne för efterföljande körningar. Om en fråga slösar bort > 50% av det tilldelade minnesutrymmet, minska storleken på minnestilldelningen för efterföljande körningar.
Feedback om minnestilldelning (percentil) Ja, från och med databaskompatibilitetsnivå 160 Åtgärdar existerande begränsningar för feedback om minnesallokering på ett diskret sätt genom att införliva tidigare frågeexekvering för att förbättra återkopplingen.
Minnesbidrag, CE- och DOP-feedbackbeständighet Ja, från och med databaskompatibilitetsnivå 160 Ger ny funktionalitet för att bibehålla feedback om minnestilldelning. CE- och DOP-feedback sparas alltid. Kräver att Query Store är aktiverat för databasen och i READ_WRITE läge.
Optimering av planstyrning med Query Store Nej Minskar kompileringskostnaderna för upprepade framtvingade frågor. Mer information finns i Optimerad plan framtvingas med Query Store.
Skalär användardefinierad funktion (UDF) inlining Ja, från och med databaskompatibilitetsnivå 150 Skalära UDF:er omvandlas till motsvarande relationella uttryck som infogas i den anropande frågan, vilket ofta resulterar i betydande prestandavinster.
optimering av parameterkänslig plan Ja, från och med databaskompatibilitetsnivå 160 Optimering av parameterkänslighetsplan adresserar scenariot där en enda cachelagrad plan för en parametriserad fråga inte är optimal för alla möjliga inkommande parametervärden, till exempel icke-enhetliga datadistributioner.
Uppskjuten kompilering av tabellvariabel Ja, från och med databaskompatibilitetsnivå 150 Använder den faktiska kardinaliteten för tabellvariabeln som påträffades vid den första kompilering i stället för en fast gissning.

IQP-funktioner för SQL Server 2019

IQP-funktion Stöds i SQL Server 2019 (15.x) Description
Anpassningsbara kopplingar (Batch-läge) Ja, från och med SQL Server 2017 (14.x) med databaskompatibilitetsnivå 140 Anpassningsbara kopplingar väljer dynamiskt en kopplingstyp under körningstid baserat på faktiska inmatningsrader.
Ungefärlig räkning av distinkta element Yes Ange ungefärligt COUNT DISTINCT för stordatascenarier med fördelen med höga prestanda och ett lågt minnesfotavtryck.
Batchläge på radlagring Ja, från och med databaskompatibilitetsnivå 150 Ange batchläge för CPU-bundna relationsbaserade DW-arbetsbelastningar utan att behöva kolumnlagringsindex.
Interfolierad exekvering Ja, från och med databaskompatibilitetsnivå 140 Använd den faktiska kardinaliteten för tabellvärdesfunktionen med flera instruktioner som påträffades vid den första kompilering i stället för en fast gissning.
Feedback om minnesbidrag (Batch-läge) Ja, från och med databaskompatibilitetsnivå 140 Om en fråga i batchläge har operationer som spills till disken, lägg till mer minne för kommande körningar. Om en fråga slösar bort > 50% av det tilldelade minnesutrymmet, minska storleken på minnestilldelningen för efterföljande körningar.
Feedback om minnesåtergivning (radläge) Ja, från och med databaskompatibilitetsnivå 150 Om en fråga i radläge har åtgärder som spills till disk, lägg till mer minne för efterföljande körningar. Om en fråga slösar bort > 50% av det tilldelade minnesutrymmet, minska storleken på minnestilldelningen för efterföljande körningar.
Skalär användardefinierad funktion (UDF) inlining Ja, från och med databaskompatibilitetsnivå 150 Skalära UDF:er omvandlas till motsvarande relationella uttryck som infogas i den anropande frågan, vilket ofta resulterar i betydande prestandavinster.
Uppskjuten kompilering av tabellvariabel Ja, från och med databaskompatibilitetsnivå 150 Använd den faktiska kardinaliteten för tabellvariabeln som påträffades vid den första kompilering i stället för en fast gissning.

IQP-funktioner för SQL Server 2017

IQP-funktion Stöds i SQL Server 2017 (14.x) Description
Anpassningsbara kopplingar (Batch-läge) Ja, från och med SQL Server 2017 (14.x) med databaskompatibilitetsnivå 140 Anpassningsbara kopplingar väljer dynamiskt en kopplingstyp under körningstid baserat på faktiska inmatningsrader.
Ungefärlig räkning av distinkta element Yes Ange ungefärligt COUNT DISTINCT för stordatascenarier med fördelen med höga prestanda och ett lågt minnesfotavtryck.
Interfolierad exekvering Ja, från och med databaskompatibilitetsnivå 140 Använd den faktiska kardinaliteten för tabellvärdesfunktionen med flera instruktioner som påträffades vid den första kompilering i stället för en fast gissning.
Feedback om minnesbidrag (Batch-läge) Ja, från och med databaskompatibilitetsnivå 140 Om en fråga i batchläge har operationer som spills till disken, lägg till mer minne för kommande körningar. Om en fråga slösar bort > 50% av det tilldelade minnesutrymmet, minska storleken på minnestilldelningen för efterföljande körningar.

Krav för Query Store

Flera av de intelligenta frågebearbetningsfunktionerna kräver att Query Store är aktiverat för att kunna dra nytta av användardatabasen. Information om hur du aktiverar Query Store finns i Aktivera Query Store.

IQP-funktion Kräver att Query Store är aktiverat och READ_WRITE
Anpassningsbara kopplingar (Batch-läge) No
Ungefärlig räkning av distinkta element No
Ungefärlig percentil No
Batchläge på radlagring No
feedback om kardinalitetsuppskattning (CE) Yes
grad av parallellitet (DOP) feedback Yes
Interfolierad exekvering No
Feedback om minnesbidrag (Batch-läge) No
Feedback om minnesåtergivning (radläge) No
Feedback om minnestilldelning (läge för percentil och varaktighet) Yes
Optimering av planstyrning med Query Store Yes
Skalär användardefinierad funktion (UDF) inlining No
optimering av parameterkänslig plan Nej, men rekommenderas
Uppskjuten kompilering av tabellvariabel No