Aan de slag met de QTA (Query Tuning Assistant)

Voltooid

U wilt twee productiedatabases migreren van SQL Server 2012 naar een nieuw SQL Server 2022-exemplaar. Omdat de databases in gebruik zijn, wilt u eerst de compatibiliteitsniveaus op de oorspronkelijke instellingen laten staan en de toepassingen opnieuw aanwijzen. De kardinaliteitsschatter is gewijzigd sinds SQL Server 2014 en u wilt de queryprestaties meten voordat u het compatibiliteitsniveau van de databases wijzigt in SQL Server 2022 (160).

U moet query's zoeken en herstellen die verslechteren wanneer u het compatibiliteitsniveau wijzigt en het nieuwe algoritme voor de kardinaliteitsschatting toepast. Met deze benadering wordt een basislijn voor prestaties met elkaar vergeleken nadat u het compatibiliteitsniveau hebt bijgewerkt.

Als u Query Store inschakelt, worden de metrische gegevens verzameld die u nodig hebt om terugdraaiende query's te vinden en wordt u begeleid bij het herstellen van de regresserende query's met behulp van de QTA (Query Tuning Assistant). Deze eenheid biedt een overzicht van de Query Store en de QTA.

Overzicht van Query Store

De functie Query Store is geïntroduceerd in SQL Server 2016 om continu informatie te verzamelen over de uitvoering en prestaties van query's in een database. Query Store werkt als een vluchtgegevensrecorder om runtime-informatie over query's en plannen te verzamelen. Als u deze runtimegegevens opslaat, kunt u de prestaties na verloop van tijd bijhouden. Als er iets misgaat, is er een geschiedenis van informatie om de oorzaak van het probleem te achterhalen.

Vanaf SQL Server 2022 en in Azure SQL Database en SQL Managed Instance is de Query Store standaard ingeschakeld voor nieuwe databases. In SQL Server 2016, SQL Server 2017 en SQL Server 2019 is de Query Store niet standaard ingeschakeld, maar elke database op een exemplaar van SQL Server 2016 of hoger kan de Query Store inschakelen, uitschakelen en configureren. Zie de volgende les voor instructies over het inschakelen van Query Store of het bevestigen van de configuratie van een database.

Query Store kan werken aan databases met eerdere compatibiliteitsniveaus dan het SQL Server-exemplaar. Als u bijvoorbeeld een database migreert van SQL Server 2012 naar SQL Server 2022 en het compatibiliteitsniveau op 110 laat staan, kan Query Store nog steeds worden uitgevoerd op de database.

Veel functies van Intelligent Query Processing en andere automatische prestatieverbeteringen zijn echter alleen ingeschakeld voor nieuwere databasecompatibiliteitsniveaus. Daarom moet u proberen de prestaties van uw toepassing te testen op het meest recente compatibiliteitsniveau van de SQL Server-database. De Query Store en QTA kunnen helpen bij deze prestatietests.

Wanneer Query Store is ingeschakeld voor een database, worden de volgende statistieken voor uw query's verzameld en gerapporteerd:

  • Teruggedraaide queries
  • Algemeen resourceverbruik
  • Query's die de meeste resources verbruiken
  • Queries met geforceerde uitvoeringsplannen
  • Query's met hoge variatie
  • Querywachtstatistieken
  • Bijgehouden queries

Een teruggedraaide query treedt op wanneer de queryoptimalisatie een nieuw queryplan gebruikt dat ervoor zorgt dat de prestaties afnemen. Regressie kan optreden na belangrijke wijzigingen, zoals het toevoegen, verwijderen of wijzigen van een index, het bijwerken van statistieken of het wijzigen van de kardinaliteit van gegevens.

Voordat Query Store werd uitgevoerd, gaf SQL Server geen inzicht in de oorzaak van regressies en was het identificeren van problemen een probleem voor databaseontwikkelaars en beheerders. U kunt nu Query Store gebruiken om teruggedraaide query's te vinden en de optimizer af te dwingen om een bepaald plan uit de geschiedenis te gebruiken.

Het is gebruikelijk dat een paar van de duizenden query's de meeste systeemresource gebruiken. De Query Store identificeert welke query's het hoogste verbruik hebben, hetzij vanwege regressie of vanwege slechte afstemming. Afhankelijk van de configuratie kunt u resultaten filteren op duur, CPU, geheugen, I/O of aantal uitvoeringen.

U kunt Query Store gebruiken om de lopende prestaties te bewaken en voor A/B-tests om de prestaties te vergelijken voor en na het toepassen van één wijziging. U kunt bijvoorbeeld een query afstemmen door een index toe te voegen aan een tabel waarnaar de query verwijst, zodat het opzoeken van joins sneller verloopt. Als u de statistieken in de Query Store voor en nadat u de index toevoegt, vergelijkt, wordt aangegeven of de index van invloed is op de prestaties. U kunt ook statistieken vergelijken nadat u nieuwe hardware hebt toegevoegd of een toepassing hebt bijgewerkt.

Overzicht van Query Tuning Assistant

De QTA (Query Tuning Assistant) gebruikt gegevens uit de Query Store om query's te vinden die beginnen met regressies. De QTA experimenteert automatisch om een oplossing te vinden waarmee de query sneller wordt, voordat de query ondermaats presteert tot een niveau dat gebruikers beïnvloedt.

U kunt Query Store en de QTA gebruiken om de databaseprestaties na de upgrade te bewaken en te optimaliseren. Nadat u een database naar SQL Server 2016 of hoger hebt gemigreerd, laat u het compatibiliteitsniveau van de database ongewijzigd en schakelt u Query Store in om statistieken van de basislijnqueryprestaties te verzamelen.

Vervolgens wijzigt u het compatibiliteitsniveau en blijft u Query Store-gegevens gebruiken om de prestatiestatistieken van uw query's te meten. U kunt de statistieken vergelijken om erachter te komen of elke query beter, hetzelfde of erger is dan vóór de upgrade.

Wanneer u het compatibiliteitsniveau wijzigt om de database te upgraden, wijzigt SQL Server de versie van de kardinaliteitsschatter die wordt gebruikt. De QTA ontdekt mogelijke patronen van queryregressie door wijzigingen in de kardinaliteitsschatter en voert experimenten uit om prestatieverbeteringen te ontdekken. Vervolgens kunt u planhandleidingen maken voor query's die verbetering laten zien.

Samenvatting

Query Store meet continu de prestatiestatistieken van uw query's, net zoals de vluchtgegevensrecorder van een vliegtuig activiteit vastlegt. U kunt Query Store inschakelen voor elke database op SQL Server 2016 of hoger, ongeacht het compatibiliteitsniveau. Gebruik Query Store om continu queryprestaties te bewaken en voor A/B-tests om de effecten van één wijziging te meten.

Wanneer u een database upgradet naar SQL Server 2014 of hoger, kunnen wijzigingen in de kardinaliteitsschatter query's vertragen die snel waren in de vorige VERSIE van SQL Server. In het ideale geval wilt u regressies zoeken en herstellen voordat ze van invloed zijn op gebruikers. Als u Query Store inschakelt voor uw databases, betekent dit dat statistieken continu worden verzameld op de query's. Vervolgens kunt u de QTA gebruiken om terugloopquery's te identificeren en op te lossen voordat ze een probleem worden.