Reading Execution Plans Successfully Arthur Daniels Reading Execution Plans Successfully
SQL Saturday Madison Sponsors Gold Silver
SQL Saturday Madison After Party! 6:30pm Madison’s 119 King Street Madison, WI 53703 PASS Summit (November 6th) $150 discount code: SSDISHN1C
Arthur Daniels Twitter: ArthurDanSQL www.DBA-Art.com Database Administrator SAP Fieldglass Focuses on performance tuning “I don’t care how long my query takes as long as it returns results”
Overview Structure of the plan First operators DBA-Art.com Overview Structure of the plan First operators Warnings and suggestions Manipulating an execution plan
DBA-Art.com Disclaimer: SQL Server 2014 and above AdventureWorks 2014
Your environment matters DBA-Art.com Your environment matters Hardware SQL Settings Min and max memory Cost threshold for parallelism Max DOP SQL version
Structure: Graphical Execution Plan DBA-Art.com Structure: Graphical Execution Plan What’s that?
Other execution plan features DBA-Art.com Other execution plan features Flow and size of line
Graphical Execution Plan DBA-Art.com Graphical Execution Plan Plan Operators Index Seek Index Scan Key Lookup
DBA-Art.com Where and what are they? Graphical Execution Plans are stored as XML SQL Server Management Studio (SSMS) Live Query Stats SQL Server Plan Cache Query Store?
DBA-Art.com The Plan Cache sys.dm_exec_cached_plans (2008) Plan cache contains estimates Emptied when server restarts
Plan cache demo Build plan cache Find our specific plan DBA-Art.com Plan cache demo To-do: Build plan cache Find our specific plan Look at operator View actual plan’s rows vs estimated.
Where do the estimates come from? DBA-Art.com Where do the estimates come from? SQL Server automatically generates statistics One statistic per index One statistic per column once a query searches by that column Search as in Where clause, JOINs
DBA-Art.com Statistics Demo Open Statistics on IX_TransactionHistoryArchive_ProductID
Statistics General Used for execution plan estimates DBA-Art.com Statistics General Used for execution plan estimates Automatically generated One for each index One for each column* Statistics contain header, density vector and histogram
Warnings and Suggestions
DBA-Art.com Implicit Conversion Why? In actual and estimated
Reading Implicit Conversions DBA-Art.com Reading Implicit Conversions Demo
DBA-Art.com Missing Index Hints Execution plan will contain index suggestions Only the first missing index is shown Review missing index DMVs
DBA-Art.com Missing Indexes Demo
Manipulating an execution plan DBA-Art.com Manipulating an execution plan Parallelism as operators Gather Streams Distribute Streams Repartition Streams
Comparing a parallel query to serial query DBA-Art.com Comparing a parallel query to serial query Demo Set Cost Threshold for Parallelism to 1 for this demo
Conclusion Look at the warnings Start with the right side of the plan DBA-Art.com Conclusion DBA-Art.com Twitter: @ArthurDanSQL Look at the warnings Start with the right side of the plan Read the predicates to understand the operator Try to re-write the query
DBA-Art.com Questions? You can also contact me on Twitter, @ArthurDanSQL or my website, www.DBA-Art.com
DBA-Art.com Useful links Finding Implicit Conversions in your Plan Cache Free graphical plan explorer: https://www.sentryone.com/plan-explorer/