Uitvoeringsplannen voor SQL-query's worden gegenereerd wanneer een query-optimizer de meest efficiënte manier bepaalt om de door een query gevraagde gegevens te leveren. Deze plannen zijn een weergave van de databasebewerkingen die een query uitvoert, en laten zien welke objecten de query gebruikt, de soorten gebruik en hoe ze worden gebruikt.
Het is algemeen bekend dat slecht presterende zoekopdrachten een belangrijke indicator zijn dat er iets mis is in een database. Dus "onder de motorkap" kijken naar het uitvoeringsplan van een query is een van de beste manieren om de oorzaak van het prestatieprobleem te achterhalen.
De informatie die beschikbaar is in een SQL-uitvoeringsplan is van onschatbare waarde voor het oplossen van problemen met SQL Server-queryprestaties door DBA's, omdat het hen in staat stelt de hoofdoorzaak van het probleem te achterhalen en de query indien nodig af te stemmen.
Het onderzoeken van SQL-uitvoeringsplannen is een van de eerste stappen bij het afstemmen van de prestaties, omdat het plan duidelijk de meest waarschijnlijke bronnen van problemen binnen een query aan het licht brengt, waaronder dure operators, een ongebruikelijk aantal records dat tussen operators vloeit en extra operators.
DBA's profiteren ook van waarschuwingen voor uitvoeringsplannen die gebruikers waarschuwen voor problemen zoals tempdb-lekkages en ontbrekende indexen.
Soorten SQL-uitvoeringsplannen
Er zijn twee hoofdtypen SQL-uitvoeringsplannen:geschatte uitvoeringsplannen en werkelijke schattingsplannen.
Geschatte uitvoeringsplannen zijn het best te omschrijven als een soort weersvoorspelling. Zoals de naam al aangeeft, gebruiken plannen voor geschatte uitvoering geschatte berekeningen, statistieken en andere parameters om de stappen te schatten die kunnen worden gevolgd door de SQL Server Engine om de ingediende query uit te voeren na het parseren van de query.
U hoeft de query niet uit te voeren om dit type uitvoeringsplan te genereren, dus het is goed voor complexe query's waarvoor het genereren van een daadwerkelijk uitvoeringsplan lang zou duren.
Werkelijke uitvoeringsplannen voeren de ingediende query uit en geven vervolgens de stappen weer die tijdens de uitvoering hebben plaatsgevonden. Dit type plan toont echte berekeningen en de daadwerkelijke (niet geschatte) stappen die door de SQL Server Engine worden gevolgd.
Omdat dit type uitvoeringsplan de query daadwerkelijk uitvoert, is het een goede keuze voor het oplossen van problemen met de prestatie van query's.
Een SQL-uitvoeringsplan genereren
Hackernoon geeft een beknopte beschrijving van het genereren van geschatte en daadwerkelijke uitvoeringsplannen. Het proces kan worden teruggebracht tot de volgende stappen:
Genereer een geschat uitvoeringsplan
- Ga naar de database
- Markeer de zoekopdracht
- Klik op "Query"
- Klik op 'Geschat uitvoeringsplan weergeven' of gebruik de sneltoets Ctrl + L
Genereer een daadwerkelijk uitvoeringsplan
- Ga naar de database
- Markeer de zoekopdracht
- Klik op "Query"
- Klik op "Include Actual Execution Plan" of gebruik de sneltoets Ctrl + M
U vindt een gedetailleerde uitleg over het genereren van geschatte uitvoeringsplannen en daadwerkelijke uitvoeringsplannen in de officiële Microsoft-documentatie.
Waarom geschatte en werkelijke uitvoeringsplannen voor SQL kunnen verschillen
Over het algemeen zullen de geschatte en daadwerkelijke uitvoeringsplannen vergelijkbaar zijn. Er zijn echter momenten waarop ze anders zijn. Dit is normaal en treedt op omdat de databasestatistieken en de werkelijke gegevens verschillen. Deze verschillen kunnen via verschillende kanalen worden geïntroduceerd:
Parallelisme
Plankosten kunnen ertoe leiden dat er twee uitvoeringsplannen worden gemaakt voor een ingediende query. De SQL Server Engine kiest of het parallelle plan wel of niet wordt gebruikt, dus het is mogelijk dat het ene plan het parallelle plan gebruikt en het andere het seriële plan.
Verouderde statistieken
Wanneer u gegevens invoegt in en gegevens verwijdert uit tabellen en indexen of de tabel of het indexschema wijzigt, zullen de statistieken veranderen. Als de statistieken niet regelmatig worden bijgewerkt, wijkt het daadwerkelijke uitvoeringsplan af van het geschatte uitvoeringsplan.
Ongeldig geschat abonnement
Als een query een instructie bevat die een tijdelijke tabel vereist die alleen bestaat als de query wordt uitgevoerd, zal het genereren van een geschat uitvoeringsplan een fout veroorzaken omdat er geen query is uitgevoerd. Dezelfde query zou prima verlopen in het eigenlijke uitvoeringsplan omdat de query werd uitgevoerd.
SQL-uitvoeringsplannen zijn een waardevolle bron voor het oplossen van prestatieproblemen met SQL Server. Weten hoe u zowel geschatte als werkelijke uitvoeringsplannen voor SQL kunt genereren, is een essentieel hulpmiddel voor elke DBA die is belast met het afstemmen van query's voor optimale prestaties.