Aanbevolen procedures voor Query Store
Van toepassing op: SQL Server 2022 (16.x)
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
In dit artikel worden aanbevolen procedures beschreven voor het gebruik van Query Store-hints. Query Store-hints maken het vormgeven van shapes voor queryplannen mogelijk zonder toepassingscode te wijzigen.
- Zie Prestaties bewaken met behulp van de Query Store-voor meer informatie over het configureren en beheren met de Query Store.
- Zie Prestaties afstemmen met behulp van de Query Store-voor informatie over het detecteren van bruikbare informatie en het afstemmen van prestaties met de Query Store.
Gebruiksvoorbeelden voor Query Store-hints
Houd rekening met de volgende gebruiksvoorbeelden als ideaal voor Query Store-hints. Zie Wanneer query store-hintsworden gebruikt voor meer informatie.
Voorzichtigheid
Omdat sql Server Query Optimizer doorgaans het beste uitvoeringsplan voor een query selecteert, raden we u aan alleen hints te gebruiken als laatste redmiddel voor ervaren ontwikkelaars en databasebeheerders. Zie queryhintsvoor meer informatie.
Wanneer code niet kan worden gewijzigd
Met behulp van Query Store-hints kunt u de uitvoeringsplannen van query's beïnvloeden zonder toepassingscode of databaseobjecten te wijzigen. Met geen andere functie kunt u snel en eenvoudig queryhints toepassen.
U kunt query store-hints gebruiken, bijvoorbeeld om ETL's te gebruiken zonder code opnieuw te implementeren. Leer hoe u bulksgewijs laden kunt verbeteren met Query Store-hints met deze video van 14 minuten:
Query Store-hints zijn eenvoudige methoden voor het afstemmen van query's, maar als een query problematisch wordt, moet deze worden aangepakt met aanzienlijke codewijzigingen. Als u regelmatig de noodzaak vindt om Query Store-hints toe te passen op een query, kunt u overwegen om een grotere query opnieuw te schrijven. De SQL Server Query Optimizer selecteert doorgaans het beste uitvoeringsplan voor een query. We raden u aan alleen hints te gebruiken als laatste redmiddel voor ervaren ontwikkelaars en databasebeheerders.
Zie Ondersteunde queryhintsvoor informatie over welke queryhints kunnen worden toegepast.
Onder hoge transactiebelasting of met bedrijfskritieke code
Als codewijzigingen niet praktisch zijn vanwege hoge uptimevereisten of transactionele belasting, kunnen Query Store-hints snel queryhints toepassen op bestaande queryworkloads. Het toevoegen en verwijderen van Query Store-hints is eenvoudig.
Query Store-hints kunnen worden toegevoegd aan en verwijderd uit batches query's om de prestaties aan te passen voor vensters die zijn getimed voor bursts van uitzonderlijke werkbelasting.
Als vervanging voor planhandleidingen
Voorafgaand aan Query Store-hints zou een ontwikkelaar moeten vertrouwen op planhandleidingen om vergelijkbare taken uit te voeren, wat complex kan zijn voor gebruik. Query Store-hints zijn geïntegreerd met Query Store-functies van SQL Server Management Studio (SSMS) voor visuele verkenning van query's.
Met planhandleidingen is het doorzoeken van alle plannen met behulp van queryfragmenten nodig. De functie Query Store-hints vereist niet dat exact overeenkomende query's van invloed zijn op het resulterende queryplan. Query Store-hints kunnen worden toegepast op een query_id
in de Query Store-gegevensset.
Aanwijzingen voor Query Store hebben voorrang boven hardgecodeerde aanwijzingen op instructieniveau en bestaande plangidsen.
Overweeg een hoger compatibiliteitsniveau
Query Store-hints kunnen een waardevolle methode zijn wanneer een nieuwer databasecompatibiliteitsniveau bijvoorbeeld niet beschikbaar is vanwege de specificatie van de leverancier of grotere testvertragingen. Wanneer een hoger compatibiliteitsniveau beschikbaar is voor een database, kunt u overwegen het databasecompatibiliteitsniveau van een afzonderlijke query te upgraden om te profiteren van de nieuwste prestatieoptimalisaties en -functies van SQL Server.
Als u bijvoorbeeld een EXEMPLAAR van SQL Server 2022 (16.x) hebt met een database in compatibiliteitsniveau 140, kunt u nog steeds Query Store-hints gebruiken om afzonderlijke query's uit te voeren in compatibiliteitsniveau 160. U kunt de volgende hint gebruiken:
EXEC sys.sp_query_store_set_hints @query_id= 39, @query_hints = N'OPTION(USE HINT(''QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_160''))';
Zie Query Store hints-voorbeeldenvoor een complete zelfstudie.
Overweeg een ouder compatibiliteitsniveau na de upgrade
Een ander geval waarin Query Store-hints kunnen helpen, is waar query's niet rechtstreeks kunnen worden gewijzigd na een migratie of upgrade van een SQL Server-exemplaar. Gebruik Query Store-hints om een eerder compatibiliteitsniveau voor een query toe te passen totdat deze kan worden herschreven of op een andere manier worden aangepakt om goed te presteren in het meest recente compatibiliteitsniveau. Identificeer uitbijterquery's die zijn teruggedraaid in een hoger compatibiliteitsniveau met behulp van het Query Store-rapport met teruggedraaide query's, met behulp van het hulpprogramma Query Tuning Advisor tijdens een migratie of andere toepassingstelemetrie op queryniveau. Raadpleeg de Verschillen tussen compatibiliteitsniveausvoor meer informatie over de verschillen tussen compatibiliteitsniveaus.
Nadat de prestaties het nieuwe compatibiliteitsniveau hebben getest en Query Store-hints op deze manier hebben geïmplementeerd, kunt u het compatibiliteitsniveau van de hele database upgraden terwijl belangrijke problematische query's op het voorgaande compatibiliteitsniveau worden bewaard, zonder dat er codewijzigingen zijn.
Aandachtspunten voor Query Store-hints
Houd rekening met de volgende scenario's bij het implementeren van Query Store-hints.
Wijzigingen in gegevensdistributie
Planhandleidingen, geforceerde plannen via de Query Store- en Query Store-hints overschrijven de besluitvorming van de optimizer. De Query Store-hint kan nu nuttig zijn, maar niet in de toekomst. Als een Query Store-hint bijvoorbeeld helpt bij het uitvoeren van een query in eerdere gegevensdistributie, kan dit contraproductief zijn als grootschalige DML-bewerkingen de gegevens wijzigen. Een nieuwe gegevensdistributie kan ertoe leiden dat de optimalisatie een betere beslissing neemt dan de hint. Dit scenario is het meest voorkomende gevolg van het afdwingen van plangedrag.
Uw query store-hintsstrategie regelmatig opnieuw evalueren
Evalueer uw bestaande strategie voor Query Store-hints opnieuw in de volgende gevallen:
- Na bekende wijzigingen in grote gegevensdistributie.
- Wanneer de serviceniveaudoelstelling (SLO) van uw Azure SQL Database of Managed Instance of virtuele machine is gewijzigd.
- Waar het vaststellen van plannen duurzaam is geworden. Query Store-hints kunnen het beste worden gebruikt voor oplossingen op korte termijn.
- Onverwachte vermindering in prestaties.
Groot potentieel voor impact
Query Store-hints zijn van invloed op alle uitvoeringen van de query, ongeacht de parameterset, de brontoepassing, de gebruiker of de resultatenset. In het geval van per ongeluk prestatieregressie kunnen Query Store-hints die zijn gemaakt met sys.sp_query_store_set_hints eenvoudig worden verwijderd met sys.sp_query_store_clear_hints.
Laad testwijzigingen zorgvuldig voor essentiële of gevoelige systemen voordat query store-hints in productie worden toegepast.
Geforceerde parameterisatie en de hint RECOMPILE worden niet ondersteund
Het toepassen van de hint voor het opnieuw compileren van query's met Query Store-hints wordt niet ondersteund wanneer de databaseoptie PARAMETERISATIE is ingesteld op GEFORCEERD. Zie Richtlijnen voor het gebruik van geforceerde parametersvoor meer informatie.
De hint RECOMPILE is niet compatibel met geforceerde parameterset op databaseniveau. Als de database geforceerde parameterset heeft en de hint RECOMPILE deel uitmaakt van de hintsreeks die is ingesteld in Query Store voor een query, negeert de database-engine de hint RECOMPILE en past de andere hints toe als deze wordt gebruikt. Bovendien moet vanaf juli 2022 in Azure SQL Database een waarschuwing (foutcode 12461) worden uitgegeven met de mededeling dat de hint RECOMPILE is genegeerd.
Zie Ondersteunde queryhintsvoor informatie over welke queryhints kunnen worden toegepast.
Zie ook
- Query Store-hints
- sys.query_store_query_hints (Transact-SQL)
- sys.sp_query_store_set_hints (Transact-SQL)
- sys.sp_query_store_clear_hints (Transact-SQL)
- Een uitvoeringsplan opslaan in XML-formaat
- uitvoeringsplannen weergeven en opslaan
- hints (Transact-SQL) - Vraag