Microsoft SQL Server Beräknad vs Verkliga Exekveringsplaner

Låt oss anta att du bygger ett nytt hus, och du har ett kontrakt med en byggare. Efter en noggrann granskning av området, höjden och materialet som behövs bedömer han att det tar 120 dagar att bygga ett nytt hem. Efter att ha byggt hemmet tog det faktiskt 200 dagar att bygga den.

Det finns en skillnad mellan hans uppskattning och det faktiska resultatet. Detta gäller även för körning av förfrågningsplaner i SQL-servern, särskilt Beräknad vs Verklig exekveringsplaner.

Denna handledning innehåller en Beräknad exekveringsplan samt en Faktisk genomförandeplan i SQL Server.

Beräknad mot faktiska genomförandeplaner: Vad är en exekveringsplan?

Exekveringsplanen är ett sökords optimizer försök att hitta det minst kostnadseffektiva och effektiva sättet att utföra en T-SQL-fråga. För att skapa en exekveringsplan använder SQL-servern olika algoritmer, statistik, permutationer och kombinationer av sammanfogningar och index för att generera en effektiv exekveringsplan för en fråga.

Frågaoptimeraren försöker alltid skapa en exekveringsplan som hjälper till att utföra frågan snabbare med mindre CPU och I / O-användning.

Det kan visa att ett bord utför en bordsskanning på grund av ett saknat index. För att börja med prestandaproblem måste vi mestadels titta på genomförandeplanen för att få en allmän uppfattning om var frågan saknar efterfrågan.

Beräknad utföringsplan

1. En beräknad exekveringsplan genereras utan att faktiskt utföra frågan. Den är baserad på tillgänglig statistik om index.

2. Beräknade exekveringsplaner matas ut från sökningsoptimeraren. Därför betraktas det som en logisk plan.

3. Den beräknade exekveringsplanen är alltid densamma som den faktiska exekveringsplanen, men den kan skilja sig på grund av statistik som inte uppdateras, förändringar i underliggande tabellstruktur, stora inlägg / radera / uppdatera operationer, saknade index och andra faktorer.

4. Det kan misslyckas med att skapa en beräknad genomförandeplan om ett förfarande innebär att skapa tempabord eller tabellvariabler. Eftersom en beräknad planfråga inte exekveras, beaktas tempabord inte när man producerar en beräknad exekutionsplan.

Verklig utföringsplan

1. En faktisk exekveringsplan genereras efter exekveringen av frågan. Det är mer informativt och tillförlitligt eftersom det är baserat på faktisk utförande inte på beräknad statistik.

2. En verklig exekveringsplan kan ta mer tid att generera om din fråga är komplex eftersom den måste exekvera frågan för att skapa en plan. Om du har en komplex fråga är det bättre att först kontrollera den beräknade planen.

3. Att arbeta med en faktisk exekveringsplan är tillförlitlig vid felsökning av prestationsrelaterade problem, eftersom det ger oss den faktiska, korrekta informationen.

Få en beräknad utföringsplan

Olika alternativ är tillgängliga för att skapa en beräknad exekutionsplan.

1. Välj en fråga. Högerklicka på ett frågefönster och välj Visa beräknad utföringsplan.

2. Klicka på Visa uppskattad exekveringsplan alternativet i huvudverktygsfältet.

3. Välj en fråga och tryck på CTRL + L tangentbordskombination.

Få en verklig utföringsplan

1. Klicka på Verklig uppskattad genomförandeplan alternativet i huvudverktygsfältet.

2. Välj en fråga och tryck på CTRL + M tangentbordskombination.

Exempel:

En beräknad plan kan inte erhållas för frågor som gäller tillfälliga tabeller, eftersom en fråga faktiskt exekveras av sökmotor för att få den beräknade exekveringsplanen.

Välj frågan. Klicka på Visa Beräknad exekveringsplan, och du får ett fel.

Ogiltigt objektnamn '#TempTable'.

USE master SELECT * INTO #TempTable FROM master ... spt_values; välj * från #TempTable; 

Läs mer om databas- och SQL-programmering som publiceras på Tech-Recipes.