SQL Server 2005 – Reading and Interpreting Query PlansFlorin CardaşimLead developerRomSoft, IAŞI,http://www.rms.ro
AgendaGraphic, Xml and Text query plans
One-table SELECT
Table Join SELECT
INSERT, UPDATE, DELETESql Server Architecturehttp://en.wikipedia.org/wiki/Microsoft_SQL_Server
DemoThe tools:Management Studio
Server Profiler

Sql Server execution plans

Editor's Notes

  • #5 Startamdiscutia cu imaginea care descriearhitectura SQL Server. Din multitudinea de componente ne indreptamatentiacatre Query Engine(Processor) si Storage Engine. Pescurt, Query Engine ia in primire un statement SQL, ilparseazasi in urmaunoranalize produce ceeace se numeste Query Plan.Acest plan estetrimis (in format binar) la Storage Engine care esteresposnsabil cu accesulfizic la date. Discutia de astazi se limiteaza la Query Engine sioutputulacestuia Query Plan. Vomintelegeimpreunaceeste un Query plan, cum se poateobtine, citisiinterpreta.
  • #6 Scopulunui Query Plan esteacela de a descoperipasiiprin care rezolva query-ulcu un consum minimum de apeluri de I/O (disk) si CPU. Cost-based plan.Serverulcreazamaimulte Query Planurisi decide pe care ilutilizeazasianumepecel cu costul minim.Serverulmentinestatisticidespredistributiasiselectivitatea (unicitatea) valorilor din coloanesiindecsi.Implicit, statisticile se mentin automat la fiecare insert, update, joinsiasamaideparte.Planulestepasatcatre Storage Engine, care ilexecuta. E posibil ca planulsa nu fie respectatde Storage Engine in cazul in care statisticile nu maisuntactuale in momentulefectiv al rularii.Planul actual siplanulestimatcelestimatestecalculatfara a rulaefectiv query-ul, cidoarpebazastatisticilorcel actual esteplanulutilizat la rularea query-uluiPlanul actual poatediferi de celestimat, in principal din doua motive: statisticilesuntincorecte (in timpelesuntalterate un urmaoperatiunilor de insert, update, delete) sau e vorba de planuri care utilizeazaparalelismsi care la momentulrulariidecid ca paraelismul nu se maipoateefectua din motive cum arfilipsamemorieisau a threadurilorlibere.Planurile de executiesunt cache-uite cu scopul de a fireutilizate. Cum crearea un pan esteO operatiecostisitoare, intr-un sistem in care se ajunge la o bunareutilizare a planurilor, se obtincastiguriconsiderabile de performanta. Exista o schema de imbatranire a planurilor deexecutiepebazacareiaplanurilesuntscoasetreptat din cache (pentru a nu se consumainutilmemorie)DBCC FREEPROCACHE – curata cache-ul, util la testare
  • #7 Cum se vizualizeazaplanulestimatsicel actual in format Text, XML siGraficCum se automatizeazaproducerea de planurifolosind Profiler; cum se salveaza un plan XML pentru a fireutilizatmaitarziuCum se foloseste Tuning Advisor;.trc, .sql