Delen via


Intelligente queryverwerking in SQL-databases

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric Preview

De iqp-functiefamilie (Intelligent Query Processing) bevat functies met een brede impact die de prestaties van bestaande workloads verbeteren met minimale implementatie-inspanning die moet worden geïmplementeerd. In de volgende afbeelding wordt de familie van IQP-functies beschreven en toen ze voor het eerst werden geïntroduceerd voor SQL Server. Alle IQP-functies zijn beschikbaar in Azure SQL Managed Instance en Azure SQL Database. Sommige functies zijn afhankelijk van het compatibiliteitsniveau van de database.

diagram van de intelligent queryverwerkingsfamilie van functies en toen ze voor het eerst werden geïntroduceerd in SQL Server.

Bekijk deze video voor een overzicht van intelligente queryverwerking:

 

Voor demo's en voorbeeldcode van IQP-functies (Intelligent Query Processing) op GitHub, gaat u naar https://aka.ms/IQPDemos.

U kunt ervoor zorgen dat workloads automatisch in aanmerking komen voor intelligente queryverwerking door het toepasselijke databasecompatibiliteitsniveau voor de database in te schakelen. U kunt dit instellen met Behulp van Transact-SQL. Voorbeeld:

ALTER DATABASE [WideWorldImportersDW]
    SET COMPATIBILITY_LEVEL = 170;

De volgende tabel bevat alle intelligente queryverwerkingsfuncties, samen met alle vereiste die ze hebben voor databasecompatibiliteitsniveau. Zie intelligent queryverwerkingsfuncties in detail voor meer informatie over alle IQP-functies, inclusief releaseopmerkingen en uitgebreidere beschrijvingen.

IQP-functies voor Azure SQL Database en SQL Server 2025 Preview

IQP-functie Ondersteund in Azure SQL Database Ondersteund in SQL Server 2025 (17.x) Preview Description
Optionele optimalisatie van parameterplannen (OPPO) No Ja, te beginnen met SQL Server 2025 (17.x) Preview met compatibiliteitsniveau 170 Maakt gebruik van de multiplan-infrastructuur (Adaptive Plan Optimization) die is geïntroduceerd met de verbetering Parameter Sensitive Plan Optimization (PSPO), waarmee meerdere plannen worden gegenereerd op basis van één instructie. De functie kan gaandeweg een optimaler plan kiezen op basis van of een parameter NULL OR NOT NULL is, waardoor de prestaties voor query's verbeteren die anders een suboptimale prestatie voor zulke querypatronen zouden hebben.
Feedback over de kardinaliteitschatting (CE) voor expressies No Ja, te beginnen met SQL Server 2025 (17.x) Preview met compatibiliteitsniveau 160 Breidt CE-feedback uit om de kardinaliteitschattingen voor herhalende expressies in query's te verbeteren door te leren van eerdere uitvoeringen en automatisch de juiste CE-modelkeuzen toe te passen op toekomstige uitvoeringen van deze expressies
OPTIMIZED_SP_EXECUTESQL Yes Ja, beginnend met SQL Server 2025 (17.x) Preview Verminder effectief de impact van compilatiestormen. Een compilatiestorm is een situatie waarbij een groot aantal query's tegelijkertijd wordt gecompileerd, wat leidt tot prestatieproblemen en resourceconflicten. Schakel deze functie in om sp_executesql-aanroepen zich te laten gedragen als objecten zoals opgeslagen procedures en triggers vanuit een compilatieperspectief.

IQP-functies voor Azure SQL Database en SQL Server 2022

IQP-functie Ondersteund in Azure SQL Database Ondersteund in SQL Server 2022 (16.x) en latere versies Description
Adaptive Joins (Batch-modus) Ja, beginnend met databasecompatibiliteitsniveau 140 Ja, vanaf SQL Server 2017 (14.x) met databasecompatibiliteitsniveau 140 Adaptieve joins selecteren dynamisch een jointype tijdens runtime op basis van werkelijke invoerrijen.
Geschat aantal uniek Yes Ja, vanaf SQL Server 2019 (15.x) Wij bieden geschatte COUNT DISTINCT voor big data-scenario's met het voordeel van hoge prestaties en een lage geheugenvoetafdruk.
Percentiel bij benadering Ja, beginnend met databasecompatibiliteitsniveau 110 Ja, vanaf SQL Server 2022 (16.x) met compatibiliteitsniveau 110 Bereken snel percentielen voor een grote gegevensset met acceptabele op rang gebaseerde foutgrenzen om snelle beslissingen te nemen met behulp van statistische functies van het percentiel.
Batchmodus in Rowstore Ja, beginnend met databasecompatibiliteitsniveau 150 Ja, vanaf SQL Server 2019 (15.x) met compatibiliteitsniveau 150 Batchmodus bieden voor relationele DW-workloads die afhankelijk zijn van CPU zonder columnstore-indexen.
feedback over kardinaliteitschatting (CE) Ja, beginnend met databasecompatibiliteitsniveau 160 Ja, vanaf SQL Server 2022 (16.x) met compatibiliteitsniveau 160 Hiermee worden de kardinaliteitschattingen voor herhalende query's automatisch aangepast om workloads te optimaliseren waarbij inefficiënte CE-veronderstellingen slechte queryprestaties veroorzaken. CE-feedback identificeert en gebruikt een modelveronderstelling die beter past bij een bepaalde query en gegevensdistributie om de kwaliteit van het queryuitvoeringsplan te verbeteren.
mate van parallelle uitvoering (DOP) feedback Ja, beginnend met databasecompatibiliteitsniveau 160 Ja, beginnend met databasecompatibiliteitsniveau 160 Hiermee wordt de mate van parallelle uitvoering voor herhalende query's automatisch aangepast om te optimaliseren voor workloads waarbij inefficiënt parallellisme prestatieproblemen kan veroorzaken. Vereist dat Query Store is ingeschakeld.
Geïnterlinieerde Uitvoering Ja, beginnend met databasecompatibiliteitsniveau 140 Ja, vanaf SQL Server 2017 (14.x) met databasecompatibiliteitsniveau 140 Maakt gebruik van de werkelijke kardinaliteit van de tabel-gewaardeerde functie met meerdere instructies die bij de eerste compilatie is vastgesteld, in plaats van met een vaste schatting.
Geheugentoekenning feedback (Batchmodus) Ja, beginnend met databasecompatibiliteitsniveau 140 Ja, vanaf SQL Server 2017 (14.x) met databasecompatibiliteitsniveau 140 Als een batchmodusquery bewerkingen bevat die overlopen naar schijf, voegt u meer geheugen toe voor opeenvolgende uitvoeringen. Als een query 50% van het toegewezen geheugen verspilt > , vermindert u de geheugentoekenningsgrootte voor opeenvolgende uitvoeringen.
Feedback over geheugen verlenen (rijmodus) Ja, beginnend met databasecompatibiliteitsniveau 150 Ja, vanaf SQL Server 2019 (15.x) met databasecompatibiliteitsniveau 150 Als een rijmodusquery bewerkingen bevat die overlopen naar schijf, voegt u meer geheugen toe voor opeenvolgende uitvoeringen. Als een query 50% van het toegewezen geheugen verspilt > , vermindert u de geheugentoekenningsgrootte voor opeenvolgende uitvoeringen.
Feedback voor geheugen toewijzing (percentiel) Ja, ingeschakeld voor alle databases Ja, beginnend met SQL Server 2022 (16.x)) met databasecompatibiliteitsniveau 140 Behandelt bestaande beperkingen van feedback over geheugentoekenning op een niet-invasieve manier door gebruik te maken van eerdere uitvoeringen van query's om feedback te verfijnen.
Persistentie van geheugentoewijzingsfeedback Ja, ingeschakeld voor alle databases Ja, beginnend met SQL Server 2022 (16.x)) met databasecompatibiliteitsniveau 140 Biedt nieuwe functionaliteit om feedback over geheugentoekenning te behouden. Vereist dat Query Store is ingeschakeld voor de database en in READ_WRITE modus.
CE-feedbackpersistentie Ja, beginnend met databasecompatibiliteitsniveau 160 Ja, te beginnen met SQL Server 2022 (16.x)) met databasecompatibiliteitsniveau 160 Vereist dat Query Store is ingeschakeld voor de database en in READ_WRITE modus.
Geoptimaliseerd plan forceren met Query Store Yes Ja, beginnend met SQL Server 2022 (16.x)). Vermindert de compilatieoverhead voor het herhalen van geforceerde query's. Zie Geoptimaliseerd plan afdwingen met Query Store voor meer informatie.
Scalaire UDF-inlining Ja, beginnend met databasecompatibiliteitsniveau 150 Ja, vanaf SQL Server 2019 (15.x) met databasecompatibiliteitsniveau 150 Scalaire UDF's worden omgezet in gelijkwaardige relationele expressies die 'inlined' zijn in de aanroepende query, wat vaak resulteert in aanzienlijke prestatieverbeteringen.
optimalisatie van parametergevoelig plan Ja, beginnend met databasecompatibiliteitsniveau 160 Ja, vanaf SQL Server 2022 (16.x) met databasecompatibiliteitsniveau 160 Met parametergevoelige planoptimalisatie wordt het scenario opgelost waarbij één plan in de cache voor een geparameteriseerde query niet optimaal is voor alle mogelijke binnenkomende parameterwaarden, bijvoorbeeld niet-uniforme gegevensdistributies.
Uitgestelde compilatie van tabelvariabele Ja, beginnend met databasecompatibiliteitsniveau 150 Ja, vanaf SQL Server 2019 (15.x) met databasecompatibiliteitsniveau 150 Gebruikt de werkelijke kardinaliteit van de tabelvariabele die op de eerste compilatie is aangetroffen in plaats van een vaste schatting.

IQP-functies voor Azure SQL Managed Instance

IQP-functie Ondersteund in Azure SQL Managed Instance Description
Adaptive Joins (Batch-modus) Ja, beginnend met databasecompatibiliteitsniveau 140 Adaptieve joins selecteren dynamisch een jointype tijdens runtime op basis van werkelijke invoerrijen.
Geschat aantal uniek Yes Wij bieden geschatte COUNT DISTINCT voor big data-scenario's met het voordeel van hoge prestaties en een lage geheugenvoetafdruk.
Percentiel bij benadering Ja, beginnend met databasecompatibiliteitsniveau 110 Bereken snel percentielen voor een grote gegevensset met acceptabele op rang gebaseerde foutgrenzen om snelle beslissingen te nemen met behulp van statistische functies van het percentiel.
Batchmodus in Rowstore Ja, beginnend met databasecompatibiliteitsniveau 150 Batchmodus bieden voor relationele DW-workloads die afhankelijk zijn van CPU zonder columnstore-indexen.
feedback over kardinaliteitschatting (CE) Ja, beginnend met databasecompatibiliteitsniveau 160 Hiermee worden de kardinaliteitschattingen voor herhalende query's automatisch aangepast om workloads te optimaliseren waarbij inefficiënte CE-veronderstellingen slechte queryprestaties veroorzaken. CE-feedback identificeert en gebruikt een modelveronderstelling die beter past bij een bepaalde query en gegevensdistributie om de kwaliteit van het queryuitvoeringsplan te verbeteren.
mate van parallelle uitvoering (DOP) feedback Ja, vanaf databasecompatibiliteitsniveau 160 in Azure SQL Managed Instance met SQL Server 2025 of het Always-up-to-dateupdatebeleid. Nee, voor het updatebeleid voor SQL Server 2022. Hiermee wordt de mate van parallelle uitvoering voor herhalende query's automatisch aangepast om te optimaliseren voor workloads waarbij inefficiënt parallellisme prestatieproblemen kan veroorzaken. Vereist dat Query Store is ingeschakeld.
Geïnterlinieerde Uitvoering Ja, beginnend met databasecompatibiliteitsniveau 140 Maakt gebruik van de werkelijke kardinaliteit van de tabel-gewaardeerde functie met meerdere instructies die bij de eerste compilatie is vastgesteld, in plaats van met een vaste schatting.
Geheugentoekenning feedback (Batchmodus) Ja, beginnend met databasecompatibiliteitsniveau 140 Als een batchmodusquery bewerkingen bevat die overlopen naar schijf, voegt u meer geheugen toe voor opeenvolgende uitvoeringen. Als een query 50% van het toegewezen geheugen verspilt > , vermindert u de geheugentoekenningsgrootte voor opeenvolgende uitvoeringen.
Feedback over geheugen verlenen (rijmodus) Ja, beginnend met databasecompatibiliteitsniveau 150 Als een rijmodusquery bewerkingen bevat die overlopen naar schijf, voegt u meer geheugen toe voor opeenvolgende uitvoeringen. Als een query 50% van het toegewezen geheugen verspilt > , vermindert u de geheugentoekenningsgrootte voor opeenvolgende uitvoeringen.
Feedback voor geheugen toewijzing (percentiel) Ja, beginnend met databasecompatibiliteitsniveau 160 Behandelt bestaande beperkingen van feedback over geheugentoekenning op een niet-invasieve manier door gebruik te maken van eerdere uitvoeringen van query's om feedback te verfijnen.
Geheugentoekenning, CE en DOP-feedbackpersistentie Ja, beginnend met databasecompatibiliteitsniveau 160 Biedt nieuwe functionaliteit om feedback over geheugentoekenning te behouden. CE- en DOP-feedback blijven altijd behouden. Vereist dat Query Store is ingeschakeld voor de database en in READ_WRITE modus.
Geoptimaliseerd plan forceren met Query Store Nee Vermindert de compilatieoverhead voor het herhalen van geforceerde query's. Zie Geoptimaliseerd plan afdwingen met Query Store voor meer informatie.
Scalaire UDF-inlining Ja, beginnend met databasecompatibiliteitsniveau 150 Scalaire UDF's worden omgezet in gelijkwaardige relationele expressies die 'inlined' zijn in de aanroepende query, wat vaak resulteert in aanzienlijke prestatieverbeteringen.
optimalisatie van parametergevoelig plan Ja, beginnend met databasecompatibiliteitsniveau 160 Optimalisatie van parametergevoeligheidsplan is geschikt voor het scenario waarin één plan in de cache voor een geparameteriseerde query niet optimaal is voor alle mogelijke binnenkomende parameterwaarden, bijvoorbeeld niet-uniforme gegevensdistributies.
Uitgestelde compilatie van tabelvariabele Ja, beginnend met databasecompatibiliteitsniveau 150 Gebruikt de werkelijke kardinaliteit van de tabelvariabele die op de eerste compilatie is aangetroffen in plaats van een vaste schatting.

IQP-functies voor SQL Server 2019

IQP-functie Ondersteund in SQL Server 2019 (15.x) Description
Adaptive Joins (Batch-modus) Ja, vanaf SQL Server 2017 (14.x) met databasecompatibiliteitsniveau 140 Adaptieve joins selecteren dynamisch een jointype tijdens runtime op basis van werkelijke invoerrijen.
Geschat aantal uniek Yes Wij bieden geschatte COUNT DISTINCT voor big data-scenario's met het voordeel van hoge prestaties en een lage geheugenvoetafdruk.
Batchmodus in Rowstore Ja, beginnend met databasecompatibiliteitsniveau 150 Batchmodus bieden voor relationele DW-workloads die afhankelijk zijn van CPU zonder columnstore-indexen.
Geïnterlinieerde Uitvoering Ja, beginnend met databasecompatibiliteitsniveau 140 Gebruik de werkelijke kardinaliteit van de multi-statement table-valued functie die bij de eerste compilatie wordt aangetroffen in plaats van een vaste schatting.
Geheugentoekenning feedback (Batchmodus) Ja, beginnend met databasecompatibiliteitsniveau 140 Als een batchmodusquery bewerkingen bevat die overlopen naar schijf, voegt u meer geheugen toe voor opeenvolgende uitvoeringen. Als een query 50% van het toegewezen geheugen verspilt > , vermindert u de geheugentoekenningsgrootte voor opeenvolgende uitvoeringen.
Feedback over geheugen verlenen (rijmodus) Ja, beginnend met databasecompatibiliteitsniveau 150 Als een rijmodusquery bewerkingen bevat die overlopen naar schijf, voegt u meer geheugen toe voor opeenvolgende uitvoeringen. Als een query 50% van het toegewezen geheugen verspilt > , vermindert u de geheugentoekenningsgrootte voor opeenvolgende uitvoeringen.
Scalaire UDF-inlining Ja, beginnend met databasecompatibiliteitsniveau 150 Scalaire UDF's worden omgezet in gelijkwaardige relationele expressies die 'inlined' zijn in de aanroepende query, wat vaak resulteert in aanzienlijke prestatieverbeteringen.
Uitgestelde compilatie van tabelvariabele Ja, beginnend met databasecompatibiliteitsniveau 150 Gebruik de werkelijke kardinaliteit van de tabelvariabele die op de eerste compilatie is aangetroffen in plaats van een vaste schatting.

IQP-functies voor SQL Server 2017

IQP-functie Ondersteund in SQL Server 2017 (14.x) Description
Adaptive Joins (Batch-modus) Ja, vanaf SQL Server 2017 (14.x) met databasecompatibiliteitsniveau 140 Adaptieve joins selecteren dynamisch een jointype tijdens runtime op basis van werkelijke invoerrijen.
Geschat aantal uniek Yes Wij bieden geschatte COUNT DISTINCT voor big data-scenario's met het voordeel van hoge prestaties en een lage geheugenvoetafdruk.
Geïnterlinieerde Uitvoering Ja, beginnend met databasecompatibiliteitsniveau 140 Gebruik de werkelijke kardinaliteit van de multi-statement table-valued functie die bij de eerste compilatie wordt aangetroffen in plaats van een vaste schatting.
Geheugentoekenning feedback (Batchmodus) Ja, beginnend met databasecompatibiliteitsniveau 140 Als een batchmodusquery bewerkingen bevat die overlopen naar schijf, voegt u meer geheugen toe voor opeenvolgende uitvoeringen. Als een query 50% van het toegewezen geheugen verspilt > , vermindert u de geheugentoekenningsgrootte voor opeenvolgende uitvoeringen.

Query Store vereiste

Voor een aantal van de functies voor intelligente queryverwerking moet Query Store zijn ingeschakeld om de gebruikersdatabase te kunnen gebruiken. Zie Query Store inschakelen om de Query Store in te schakelen.

IQP-functie Vereist dat Query Store ingeschakeld is en READ_WRITE
Adaptive Joins (Batch-modus) No
Geschat aantal uniek No
Percentiel bij benadering No
Batchmodus in Rowstore No
feedback over kardinaliteitschatting (CE) Yes
mate van parallelle uitvoering (DOP) feedback Yes
Geïnterlinieerde Uitvoering No
Geheugentoekenning feedback (Batchmodus) No
Feedback over geheugen verlenen (rijmodus) No
Terugkoppeling over geheugentoewijzing (percentiel- en persistentiemodus) Yes
Geoptimaliseerd plan forceren met Query Store Yes
Scalaire UDF-inlining No
optimalisatie van parametergevoelig plan Nee, maar aanbevolen
Uitgestelde compilatie van tabelvariabele No