Dela via


Bearbeta en SQL-instruktion

Innan du diskuterar teknikerna för att använda SQL programmatiskt är det nödvändigt att diskutera hur en SQL-instruktion bearbetas. Stegen är gemensamma för alla tre teknikerna, även om varje teknik utför dem vid olika tidpunkter. Följande bild visar de steg som ingår i bearbetningen av en SQL-instruktion, som beskrivs i resten av det här avsnittet.

Steg för att bearbeta en SQL-instruktion

För att bearbeta en SQL-instruktion utför en DBMS följande fem steg:

  1. DBMS parsar först SQL-instruktionen. Den delar upp uttalandet i enskilda ord, som kallas tokens, ser till att uttalandet har ett giltigt verb och giltiga satser och så vidare. Syntaxfel och felstavningar kan identifieras i det här steget.

  2. DBMS verifierar instruktionen. Den kontrollerar utsagan mot systemkatalogen. Finns alla de tabeller som nämns i påståendet i databasen? Finns alla kolumner och är kolumnnamnen entydiga? Har användaren de behörigheter som krävs för att utföra instruktionen? Vissa semantiska fel kan identifieras i det här steget.

  3. DBMS genererar en åtkomstplan för frågan. Åtkomstplanen är en binär representation av de steg som krävs för att utföra -instruktionen. det är DBMS-motsvarigheten till körbar kod.

  4. DBMS optimerar åtkomstplanen. Den utforskar olika sätt att genomföra åtkomstplanen. Kan ett index användas för att påskynda en sökning? Ska DBMS först tillämpa ett sökvillkor på tabell A och sedan ansluta det till tabell B, eller ska det börja med kopplingen och använda sökvillkoret efteråt? Kan en sekventiell sökning genom en tabell undvikas eller reduceras till en delmängd av tabellen? När du har utforskat alternativen väljer DBMS en av dem.

  5. DBMS utför instruktionen genom att köra åtkomstplanen.

De steg som används för att bearbeta en SQL-instruktion varierar i hur mycket databasåtkomst de behöver och hur lång tid de tar. Att parsa en SQL-instruktion kräver inte åtkomst till databasen och kan göras mycket snabbt. Optimering är å andra sidan en mycket processorintensiv process och kräver åtkomst till systemkatalogen. För en komplex fråga med flera funktioner kan optimeraren utforska tusentals olika sätt att utföra samma fråga. Kostnaden för att köra frågan ineffektivt är dock vanligtvis så hög att den tid som ägnas åt optimeringen är mer än återvinns i ökad frågekörningshastighet. Detta är ännu viktigare om samma optimerade åtkomstplan kan användas om och om för att utföra repetitiva frågor.