Fråga plan

En frågeplan (eller frågeexekveringsplan ) är en sekvens av steg som används för att komma åt data i ett SQL relationsdatabashanteringssystem . Detta är ett specifikt fall av relationsmodellkonceptet för åtkomstplaner.

Eftersom SQL är deklarativ finns det vanligtvis många alternativa sätt att köra en given fråga, med mycket varierande prestanda. När en fråga skickas till databasen utvärderar frågeoptimeraren några av de olika, korrekta möjliga planerna för att utföra frågan och returnerar det den anser vara det bästa alternativet. Eftersom frågeoptimerare är ofullkomliga behöver databasanvändare och administratörer ibland manuellt undersöka och finjustera planerna som produceras av optimeraren för att få bättre prestanda.

Genererar frågeplaner

Ett givet databashanteringssystem kan erbjuda en eller flera mekanismer för att returnera planen för en given fråga. Vissa paket har verktyg som genererar en grafisk representation av en frågeplan. Andra verktyg tillåter att ett speciellt läge ställs in på anslutningen för att få DBMS att returnera en textbeskrivning av frågeplanen. En annan mekanism för att hämta frågeplanen involverar förfrågning av en virtuell databastabell efter exekvering av frågan som ska undersökas. I Oracle, till exempel, kan detta uppnås med hjälp av EXPLAIN PLAN-satsen.

Grafiska planer

Microsoft SQL Server Management Studio- verktyget, som levereras med Microsoft SQL Server, till exempel, visar den här grafiska planen när du kör det här exemplet med två tabeller mot en inkluderad exempeldatabas:

 
   
        
       
   VÄLJ  *  FRÅN  HumanResources  .  Anställd  SOM  e  INNER  JOIN  Person  .  Kontakta  AS  c  ON  e  .  ContactID  =  c  .  ContactID  BESTÄLL  AV  c  .  Efternamn 

Användargränssnittet tillåter utforskning av olika attribut för de operatörer som är involverade i frågeplanen, inklusive operatörstypen, antalet rader varje operatör förbrukar eller producerar och den förväntade kostnaden för varje operatörs arbete.

Microsoft SQL Server Management Studio som visar ett exempel på frågeplan.

Textplaner

Textplanen som ges för samma fråga i skärmdumpen visas här:



    
               
                
                
                    StmtText  ----  |--  Sortera  (  ORDNING  EFTER  :([  c  ]  .  [  Efternamn  ]  ASC  ))  |--  Kapslade  slingor  (  Inre  koppling  ,  YTTRE  REFERENSER  :([  e  ]  .  [  Kontakt-ID  ],  [  Expr1004  ])  MED  ORDERED  PREFETCH  )  |--  Clustered  Index  Scan  (  OBJECT  :([  AdventureWorks  ]  .  [  HumanResources  ]  .  [  Employee  ]  .  [  PK_Employee_EmployeeID  ]  AS  [  e  ]  ))  |  --  Clustered  Index  Seek  (  OBJECT  )  [  OBJECT  .  ]  .  [  Contact  ]  .  [  PK_Contact_ContactID  ]  AS  [  c  ]),  SEEK  :([  c  ]  .  [  ContactID  ]  =  [  AdventureWorks  ]  .  [  HumanResources  ]  .  [  Anställd  ]  .  [  ContactID  ]  som  [  e  ]  .  [  ContactID  ])  BESTÄLLD  VIDARE  ) 

Det indikerar att frågemotorn kommer att göra en skanning över det primära nyckelindexet i tabellen Employee och en matchningssökning genom det primära nyckelindexet (kolumnen ContactID) i kontakttabellen för att hitta matchande rader. De resulterande raderna från varje sida kommer att visas för en kapslad loops join-operator, sorteras och returneras sedan som resultatuppsättningen till anslutningen.

För att justera frågan måste användaren förstå de olika operatorerna som databasen kan använda, och vilka som kan vara mer effektiva än andra samtidigt som de ger semantiskt korrekta frågeresultat.

Databasinställning

Granskning av frågeplanen kan ge möjligheter till nya index eller ändringar av befintliga index. Det kan också visa att databasen inte utnyttjar befintliga index på rätt sätt (se frågeoptimeraren ) .

Frågejustering

En frågeoptimerare kommer inte alltid att välja den mest effektiva frågeplanen för en given fråga. I vissa databaser kan frågeplanen granskas, problem hittas, och sedan ger frågeoptimeraren tips om hur den kan förbättras. I andra databaser kan alternativ för att uttrycka samma fråga (andra frågor som ger samma resultat) prövas. Vissa frågeverktyg kan generera inbäddade tips i frågan, för användning av optimeraren.

Vissa databaser - som Oracle - tillhandahåller en plantabell för frågejustering. Denna plantabell returnerar kostnaden och tiden för att utföra en fråga. Oracle erbjuder två optimeringssätt:

  1. CBO eller kostnadsbaserad optimering
  2. RBO eller regelbaserad optimering

RBO fasas långsamt ut. För att CBO ska användas måste alla tabeller som hänvisas till av frågan analyseras. För att analysera en tabell kan en DBA starta kod från paketet DBMS_STATS.

Andra verktyg för frågeoptimering inkluderar:

  1. SQL-spårning
  2. Oracle Trace och TKPROF
  3. Microsoft SMS (SQL) exekveringsplan
  4. Tableau Performance Recording (alla DB)