Delen via


Intelligente queryverwerking in SQL-databases

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

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 = 160;

De volgende tabel bevat alle intelligente queryverwerkingsfuncties, samen met alle vereiste die ze hebben voor databasecompatibiliteitsniveau. Voor volledige informatie over alle IQP-functies, inclusief releaseopmerkingen en uitgebreidere beschrijvingen, raadpleegt u de details van de functie Intelligent Query Processing (IQP).

IQP-functies voor Azure SQL Database en SQL Server 2025 (17.x) Preview

IQP-functie Ondersteund in Azure SQL Database Ondersteund in SQL Server 2022 (16.x) Beschrijving
Geoptimaliseerde Halloween-beveiliging Nee. Ja, te beginnen met SQL Server 2025 (17.x) Preview met compatibiliteitsniveau 170 Vermindert tempdb het ruimteverbruik en verbetert de queryprestaties door geen spool te gebruiken voor Halloween-beveiliging.

IQP-functies voor Azure SQL Database en SQL Server 2022 (16.x)

IQP-functie Ondersteund in Azure SQL Database Ondersteund in SQL Server 2022 (16.x) Beschrijving
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 Ja Ja, vanaf SQL Server 2019 (15.x) 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.
Feedback van het parallellismegraad (DOP) Ja, in preview, te beginnen met databasecompatibiliteitsniveau 160 Ja, vanaf SQL Server 2022 (16.x) met compatibiliteitsniveau 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.
Interleaved Execution 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 geheugentoekenningshoeveelheid 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.
Persistentie van DOP-feedback Ja, in preview, te beginnen 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.
Geoptimaliseerde plan doorvoering Ja 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 parametergevoeligheidsplan 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 Beschrijving
Adaptieve joins (Batch-modus) Ja, beginnend met databasecompatibiliteitsniveau 140 Adaptieve joins selecteren dynamisch een jointype tijdens runtime op basis van werkelijke invoerrijen.
Geschatte aantal unieke Ja 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.
Feedback van het parallellismegraad (DOP) Nee 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.
Interleaved Execution 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 aangetroffen in plaats van een vaste voorspelling.
Feedback over geheugentoewijzing (Batch-modus) 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.
Geheugenaanvraagfeedback (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, verklein de geheugentoekenningsgrootte voor opeenvolgende uitvoeringen.
Feedback over geheugenaanvragen (percentiel) Ja, beginnend met databasecompatibiliteitsniveau 160 Behandelt bestaande beperkingen van feedback over geheugentoekenning op een niet-intrusieve manier door eerdere query-uitvoeringen op te nemen om feedback te verfijnen.
Geheugentoekenning, CE en DOP-feedbackpersistentie Ja, beginnend met databasecompatibiliteitsniveau 160 Biedt nieuwe functionaliteit om feedback over geheugentoewijzing 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 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 parametergevoeligheidsplan Ja, beginnend met databasecompatibiliteitsniveau 160 Met parametergevoeligheidsplanoptimalisatie 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 tabelvariabelen 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 (15.x)

IQP-functie Ondersteund in SQL Server 2019 (15.x) Beschrijving
Adaptieve 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.
Geschatte telling unieke waarden Ja Lever een geschatte COUNT DISTINCT voor big data-scenario's met de voordelen van hoge prestaties en een laag geheugengebruik.
Batchmodus in Rowstore Ja, beginnend met databasecompatibiliteitsniveau 150 Batchmodus bieden voor relationele DW-workloads die afhankelijk zijn van CPU zonder columnstore-indexen.
Interleaved Execution 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, verminder dan de geheugentoekenningsgrootte voor opeenvolgende uitvoeringen.
Feedback voor geheugentoekenning (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, verminder dan de geheugentoekenning 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 tabelvariabelen 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 (14.x)

IQP-functie Ondersteund in SQL Server 2017 (14.x) Beschrijving
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 Ja Bieden geschatte COUNT DISTINCT voor big data-scenario's met het voordeel van hoge prestaties en een lage geheugenvoetafdruk.
Interleaved Execution 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 de Query Store is ingeschakeld en ingesteld op READ_WRITE.
Adaptive Joins (Batch-modus) Nee.
Geschat aantal uniek Nee.
Percentiel bij benadering Nee.
Batchmodus in Rowstore Nee.
feedback over kardinaliteitschatting (CE) Ja
Feedback van het parallellismegraad (DOP) Ja
Interleaved Execution Nee.
Geheugentoekenning feedback (Batchmodus) Nee.
Feedback over geheugen verlenen (rijmodus) Nee.
Terugkoppeling over geheugentoewijzing (percentiel- en persistentiemodus) Ja
Geoptimaliseerd plan doorvoeren Ja
Scalaire UDF-inlining Nee.
Optimalisatie van parametergevoeligheidsplan Nee, maar aanbevolen
Uitgestelde compilatie van tabelvariabelen Nee.

Voor volledige informatie over alle IQP-functies, inclusief releaseopmerkingen en uitgebreidere beschrijvingen, raadpleegt u de details van de functie Intelligent Query Processing (IQP).