query performance tuning: start to finish - home of the scary dba
TRANSCRIPT
![Page 1: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/1.jpg)
Query Performance Tuning:
Start to Finish
Grant Fritchey
![Page 2: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/2.jpg)
• Product Evangelist for Red Gate Software
• Microsoft SQL Server MVP
• PASS Chapter President
• Author:
– SQL Server Execution Plans
– SQL Server 2008 Query Performance Tuning Distilled
Who?
2
![Page 3: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/3.jpg)
Why Tune Queries?
• Most volatile aspect of a database system
• Subject to changes in data
• Affected by changes in structure
• Impacted by poor coding choices
• Victim of resource contention
3
![Page 4: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/4.jpg)
Finish Line
• The ability to collect performance metrics on their servers as
part of an overall query tuning methodology
• An understanding of how the optimizer works in support of
writing better TSQL code as well as troubleshooting poorly
performing queries
• The ability to generate, read, and understand execution plans
from multiple sources in support of troubleshooting poorly
performing queries
• A working knowledge of DMVs that will help them identify and
fix performance issues on their servers
• The ability to address common query performance problems
4
![Page 5: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/5.jpg)
GATHERING METRICS
Query Performance Tuning – Start to Finish
5
![Page 6: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/6.jpg)
Finish Line
• The ability to collect performance metrics on their servers as
part of an overall query tuning methodology
• An understanding of how the optimizer works in support of
writing better TSQL code as well as troubleshooting poorly
performing queries
• The ability to generate, read, and understand execution plans
from multiple sources in support of troubleshooting poorly
performing queries
• A working knowledge of DMVs that will help them identify and
fix performance issues on their servers
• The ability to address common query performance problems
6
![Page 7: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/7.jpg)
Where to Start Tuning?
• Random
– Pick a query?
– Ask a user?
– Alphabetically?
• Knowledge based
– Baseline
– Metrics
– Records
7
![Page 8: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/8.jpg)
Server Metrics
• Start Query Tuning at the Server
– Hardware
– Operating System
– SQL Server
• Establish a Baseline
– Now is a good time
– Save the data
8
![Page 9: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/9.jpg)
Tools for the Baseline
• Performance Monitor
• Dynamic Management Objects (DMO)
• SQL Data Collection
• Third Party Software
9
![Page 10: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/10.jpg)
Where Do Problems Occur?
• Memory
• Disk I/O
• Processor
• Network
• DO NOT SIMPLY TRUST THESE NUMBERS
10
![Page 11: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/11.jpg)
Memory
Object Counter Values
Memory Pages/sec Peaks < 50
Page Faults/sec Compare with baseline value for trend analysis
SQL Server: Buffer Manager
Buffer cache hit ratio Average value >= 90
Page Life Expectancy Average value > 300
Checkpoint Pages/Sec Peak < 30
SQL Server:Memory Manager
Memory Grants Pending Peaks = 0
11
![Page 12: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/12.jpg)
Disk I/O
Object Counter Values
PhysicalDisk % Disk Time Peaks < 85%
Avg. Disk Queue Length* Peaks < 3 per disk
Disk Transfers/sec Maximum value < 100 per disk
Avg. Disk sec/Read Compare to baseline
Avg. Disk sec/Write Compare to baseline
* Meaningless on a SAN
12
![Page 13: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/13.jpg)
Processor
Object Counter Value
Processor % Processor Time Peaks < 80%
System Context Switches/sec Peaks < 1,000
Processor Queue Length Peaks < 3
SQL Statistics Batch Requests/sec Compare to Baseline
SQL Compilations/sec Peaks > 100
SQL Recompilations/sec
13
![Page 14: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/14.jpg)
Network
Object Counter Value
Network Interface Bytes Total/sec Peaks < 50% of NIC capacity
Network Segment % Net Utilization Peaks <80% of network bandwidth
14
![Page 15: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/15.jpg)
Performance Monitor
• Positives:
– Absolute Best “Do It Yourself” Option
– Powerful
– Accurate
– Easy to Use
– Ubiquitous
• Negatives
– A lot of work to set up, maintain & clean data
– Very little direction
15
![Page 16: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/16.jpg)
Dynamic Management Objects
• Positives
– Easy to use
– In a language you know
– Data is ready to query
– Ubiquitous
• Negatives
– Incomplete
– No direction
16
![Page 17: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/17.jpg)
SQL Data Collection
• Positives
– Immediate results
– Pre-generated reports
– Easy to implement
• Negatives
– Enterprise Only
– 2008 Only
– Limited Data Set
17
![Page 18: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/18.jpg)
Third Party Tools
• Positives
– Lots of Direction
– Ready to consume reports
– Immediate returns
• Negatives
– Costly
– May not collect what you need or want
18
![Page 19: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/19.jpg)
Wait Stats & Queues
• sys.dm_os_wait_stats
• Sys.dm_exec_requests
• Sys.dm_waiting_tasks
19
![Page 20: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/20.jpg)
Query Metrics
• This is where you live
• Too much information
• Save the data, just not in its original form
• DO NOT USE PROFILER ON PRODUCTION
SYSTEMS
20
![Page 21: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/21.jpg)
The Server Side Trace
• Profiler to Generate the Script
• Files work best
• Clean and Store the Data
• Profiler GUI can be used to Browse Data
– Works with Perfmon Data
• Schedule the Start and Stop
21
![Page 22: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/22.jpg)
RML Utilities
• Free
• Huge Time Savings
• Excellent Resource
• Still Need Long-Term Storage & Reporting
22
![Page 23: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/23.jpg)
Query DMOs
• Sys.dm_exec_requests
• Sys.dm_exec_query_stats
• Sys.dm_exec_procedure_stats
23
![Page 24: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/24.jpg)
Metrics Resources
• “SQL Server 2008 Query Performance Tuning Distilled”
• Microsoft White Paper: Performance Tuning Waits and Queues.doc http://technet.microsoft.com/en-us/library/cc966413.aspx
• Microsoft White Paper: Troubleshooting Performance Problems in SQL Server 2008 http://msdn.microsoft.com/en-us/library/dd672789.aspx
• Brad McGehee
• Louis Davidson &
24
![Page 25: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/25.jpg)
Finish Line
• The ability to collect performance metrics on their servers as
part of an overall query tuning methodology
• An understanding of how the optimizer works in support of
writing better TSQL code as well as troubleshooting poorly
performing queries
• The ability to generate, read, and understand execution plans
from multiple sources in support of troubleshooting poorly
performing queries
• A working knowledge of DMVs that will help them identify and
fix performance issues on their servers
• The ability to address common query performance problems
25
![Page 26: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/26.jpg)
Questions?
26
![Page 27: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/27.jpg)
OPTIMIZER, STATISTICS,
INDEXES & CONSTRAINTS
Query Performance Tuning: Start to Finish
27
![Page 28: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/28.jpg)
Finish Line
• The ability to collect performance metrics on their servers as
part of an overall query tuning methodology
• An understanding of how the optimizer works in support of
writing better TSQL code as well as troubleshooting poorly
performing queries
• The ability to generate, read, and understand execution plans
from multiple sources in support of troubleshooting poorly
performing queries
• A working knowledge of DMVs that will help them identify and
fix performance issues on their servers
• The ability to address common query performance problems
28
![Page 29: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/29.jpg)
Optimizer
• Simply an Amazing piece of Software
• Cost-based
• Not Perfect
• Plan on Helping the Optimizer
29
![Page 30: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/30.jpg)
Relational Engine
QUERY
30
![Page 31: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/31.jpg)
Relational Engine
QUERY
Relational Engine
31
![Page 32: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/32.jpg)
Relational Engine
QUERY
Relational Engine
Query Parsor
Syntax Check Parse
Tree
32
![Page 33: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/33.jpg)
Relational Engine
QUERY
Relational Engine
Query Parsor
Syntax Check Parse
Tree
Algebrizer
Resolves Objects
Query Processor Tree
33
![Page 34: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/34.jpg)
Relational Engine
QUERY
Relational Engine
Query Parsor
Syntax Check Parse
Tree
Algebrizer
Resolves Objects
Query Processor Tree
Optimizer
Execution Plan
34
![Page 35: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/35.jpg)
Relational Engine
QUERY
DATA
Relational Engine
Query Parsor
Syntax Check Parse
Tree
Algebrizer
Resolves Objects
Query Processor Tree
Optimizer
Execution Plan
Storage Engine
35
![Page 36: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/36.jpg)
Observing the Optimizer
• Sys.dm_exec_query_optimizer_info
• Execution Plans
36
![Page 37: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/37.jpg)
Statistics
• Information about the Distribution of the Data
– Created on Index Keys
– Created on columns
– Created manually
• Cardinality
• By Default, Created Automatically
• By Default, Maintained Automatically
• Automatic Maintenance Is Not Enough
37
![Page 38: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/38.jpg)
Investigating Statistics
• DBCC SHOW_STATISTICS(table, target)
– Header
– Density
– Histogram
38
![Page 39: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/39.jpg)
Histogram
• 200 steps across the data
• An equal distribution of rows
• Leads to best possible sampling of data
– But it’s not perfect
39
"1-50" "51-100" "101-150" "150-200"
![Page 40: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/40.jpg)
Updating Statistics
• sp_updatestats
– Can resample
– Won’t run everywhere
• UPDATE STATISTICS X
– WITH FULLSCAN
40
![Page 41: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/41.jpg)
Indexes
• Clustered Index
– Primary Key Default (but not necessary)
– Data is stored at the leaf level
– Data is ordered by the key
• Non-clustered Index
– Uses cluster key or RID of a heap
– INCLUDE stored at leaf
• And the rest – outside the scope of this session
41
![Page 42: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/42.jpg)
Constraints
• Primary Key
– Cluster by default, but doesn’t have to be
– Always an index
• Foreign Key
– No indexes are created with this constraint
• Unique Constraint
– This constraint is an index
42
![Page 43: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/43.jpg)
What’s All This Mean?
SELECT ID FROM TableA WHERE ID = 42
Table A
43
![Page 44: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/44.jpg)
What’s All This Mean? SELECT a.ID, b.Name, c.Value FROM TableA as a JOIN TableB as b On a.ID = B.ID JOIN TableC as c ON b.OtherID = c.OtherID WHERE a.ID = 42
324 Possible Plans
LOOP HASH MERGE
SCAN
44
![Page 45: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/45.jpg)
Finish Line
• The ability to collect performance metrics on their servers as
part of an overall query tuning methodology
• An understanding of how the optimizer works in support of
writing better TSQL code as well as troubleshooting poorly
performing queries
• The ability to generate, read, and understand execution plans
from multiple sources in support of troubleshooting poorly
performing queries
• A working knowledge of DMVs that will help them identify and
fix performance issues on their servers
• The ability to address common query performance problems
45
![Page 46: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/46.jpg)
Questions?
46
![Page 47: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/47.jpg)
Optimizer Resources
• Dr. Dewitt’s Key Note, PASS Summit 2010
http://www.facebook.com/l.php?u=http%3A%2F
%2Fwww.slideshare.net%2FGraySystemsLab%
2Fpass-summit-2010-keynote-david-
dewitt&h=306f5
• “Inside SQL Server 2008 T-SQL Querying” Itzik
Ben-Gan
• “SQL Server 2008 Internals” Kalen Delaney
47
![Page 48: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/48.jpg)
READING EXECUTION PLANS
Query Performance Tuning: Start to Finish
48
![Page 49: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/49.jpg)
Finish Line
• The ability to collect performance metrics on their servers as
part of an overall query tuning methodology
• An understanding of how the optimizer works in support of
writing better TSQL code as well as troubleshooting poorly
performing queries
• The ability to generate, read, and understand execution plans
from multiple sources in support of troubleshooting poorly
performing queries
• A working knowledge of DMVs that will help them identify and
fix performance issues on their servers
• The ability to address common query performance problems
49
![Page 50: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/50.jpg)
Why Execution Plans
• What will be accessed
• What indexes were used
• What kind of joins were used
• How much did all these operations cost
• Tuning
• Troubleshooting
50
![Page 51: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/51.jpg)
Concepts and Architecture
• Relational Engine – Estimated Execution Plan
• Storage Engine – Actual Execution Plan
• Optimizer – Cost-Based
• Just an estimate
• Not based on your computer
• Cache – Most queries go to cache
51
![Page 52: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/52.jpg)
Graphical Plans
• Basic Execution
• Join
• Update
• Delete
• Insert
• Sub-select
• Views
52
![Page 53: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/53.jpg)
XML Plans
• Every Graphical Plan is XML
• All cached plans are XML
• Text plans show less information
53
![Page 54: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/54.jpg)
Indicators
• Scans (but not always)
• Hash Joins (but not always)
• Work Tables (but not always)
• Extra Operators
• Fat Pipes
• Estimated/Actual Disparity
54
![Page 55: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/55.jpg)
Execution Plan Resources
• SQL Server Execution Plans • Microsoft Whitepapers and Web Sites
– Statistics used by the Query Optimizer
http://www.microsoft.com/technet/prodtechnol/sql/2005/qrystats.mspx
– Compilation and Caching
http://www.microsoft.com/technet/prodtechnol/sql/2005/recomp.mspx
– Showplan Security
http://technet.microsoft.com/en-us/library/ms189602.aspx
– Understanding Joins
http://technet.microsoft.com/en-us/library/ms191426.aspx
– Analyzing a Query
http://technet.microsoft.com/en-us/library/ms191227.aspx
– Database Engine Developer Info Center
http://technet.microsoft.com/en-us/library/ms191267.aspx
– Database Engine Architect Info Center
http://technet.microsoft.com/en-us/library/ms175560.aspx
– Forcing Query Plans
http://download.microsoft.com/download/4/7/a/47a548b9-249e-484c-abd7-
29f31282b04d/Forcing_Query_Plans.doc
• PASS Top 10 Execution Plan Web Sites
55
![Page 56: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/56.jpg)
Finish Line
• The ability to collect performance metrics on their servers as
part of an overall query tuning methodology
• An understanding of how the optimizer works in support of
writing better TSQL code as well as troubleshooting poorly
performing queries
• The ability to generate, read, and understand execution plans
from multiple sources in support of troubleshooting poorly
performing queries
• A working knowledge of DMVs that will help them identify and
fix performance issues on their servers
• The ability to address common query performance problems
56
![Page 57: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/57.jpg)
Questions?
57
![Page 58: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/58.jpg)
DYNAMIC MANAGEMENT
OBJECTS
Query Performance Tuning: Start to Finish
58
![Page 59: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/59.jpg)
Finish Line
• The ability to collect performance metrics on their servers as
part of an overall query tuning methodology
• An understanding of how the optimizer works in support of
writing better TSQL code as well as troubleshooting poorly
performing queries
• The ability to generate, read, and understand execution plans
from multiple sources in support of troubleshooting poorly
performing queries
• A working knowledge of DMVs that will help them identify and
fix performance issues on their servers
• The ability to address common query performance problems
59
![Page 60: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/60.jpg)
What is a DMOs
• Internal State Data
• Functions and Views
• Security
– VIEW SERVER STATE
– VIEW DATABASE STATE
60
![Page 61: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/61.jpg)
Currently Running
• Answer Immediate Questions
• Not Cache Dependent
– But is dependent on execution
• Options:
– Sys.dm_exec_requests
– Sys.dm_tran_active_transactions
– Sys.dm_os_waiting_tasks
– Sys.dm_db_index_operational_stats
61
![Page 62: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/62.jpg)
Recently Running
• Answer Historical Questions
• Aggregate data, not individual calls
• Completely dependent on the cache
• Options:
– Sys.dm_exec_query_stats
– Sys.dm_exec_procedure_stats
62
![Page 63: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/63.jpg)
Execution Plans
• Estimated Plans Only
• Parameters are unavailable
• Cache Dependent
• Options:
– Sys.dm_exec_cached_plans
– Sys.dm_exec_query_plan
– Sys.dm_exec_text_query_plan
63
![Page 64: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/64.jpg)
Query Text
• Batch Text
• Statement Text
– Using Offset
• Cache Dependent
• Options:
– Sys.dm_exec_sql_text
64
![Page 65: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/65.jpg)
Finish Line
• The ability to collect performance metrics on their servers as
part of an overall query tuning methodology
• An understanding of how the optimizer works in support of
writing better TSQL code as well as troubleshooting poorly
performing queries
• The ability to generate, read, and understand execution plans
from multiple sources in support of troubleshooting poorly
performing queries
• A working knowledge of DMVs that will help them identify and
fix performance issues on their servers
• The ability to address common query performance problems
65
![Page 66: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/66.jpg)
Questions?
66
![Page 67: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/67.jpg)
COMMON PROBLEMS
Query Performance Tuning: Start to Finish
67
![Page 68: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/68.jpg)
Finish Line
• The ability to collect performance metrics on their servers as
part of an overall query tuning methodology
• An understanding of how the optimizer works in support of
writing better TSQL code as well as troubleshooting poorly
performing queries
• The ability to generate, read, and understand execution plans
from multiple sources in support of troubleshooting poorly
performing queries
• A working knowledge of DMVs that will help them identify and
fix performance issues on their servers
• The ability to address common query performance problems
68
![Page 69: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/69.jpg)
Common Problems
• Slow Running Query
• Key Lookup
• Parameter Sniffing
• Index Use
• Table Valued User Defined Functions
• Triggers
• Other Ways to Get Them
69
![Page 70: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/70.jpg)
Slow Running Query
• Description
– Most commonly used
purpose for execution
plans
– Great tool for observing
behavior
– Lousy tool for comparing
performance
– Drilling down is the key
• Indications
– Fat pipes
– Scans
– Estimated/Actual
– Extra operations
• Solutions
– Fix it
70
![Page 71: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/71.jpg)
Key Lookup
• Description
– AKA Bookmark Lookup
– Not necessarily a problem
• Indications
– Key Lookup Operator and a Join
• Solutions
– Change Query
– Change the index
– INCLUDE
71
![Page 72: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/72.jpg)
Parameter Sniffing
• Description – In general, this is a good thing
– Depends on the data distribution and parameters used
• Indications – Intermittent poor performance
– Disparity on estimated & actual rows
– Different execution plans at different times
• Solutions – OPTIMIZE FOR query hint
– Use local parameters
– Last resort – RECOMPILE query hint
– Last last resort – Plan Guides
72
![Page 73: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/73.jpg)
Index Use
• Descriptions – Just because you see the index name, doesn’t mean it’s getting
used properly
– Scans are not necessarily bad
– Seeks are not necessarily good
• Indications – Table Scan
– Index Scan
– Extra operators like table spool or sort
• Solutions – Create an index
– Modify an index
– Modify the query
73
![Page 74: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/74.jpg)
Table Valued User Defined Functions
• Description – Yes, I see it. It says 0%. It’s a lie.
– “One row is a tragedy; one million is a statistic. ” Joseph Stalin (sort of)
• Indications – Table Scan with a cost of 0%
– Or Table Valued Function with a cost of 0%
• Solutions – When working with more than a few rows… don’t use
them
74
![Page 75: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/75.jpg)
Triggers
• Description – Triggers are not immediately visible
– Estimated plan won’t display
– Slow performance from query that shouldn’t be
– Querying from optimizer…TEST TEST TEST this
• Indications – Second plan with the actual plan
– No hint of it in the estimated plan
• Solutions – Be sure the trigger is optimized
– Avoid where possible
75
![Page 76: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/76.jpg)
Individual Statement is Slow
• Large queries or lots of queries
• The exact execution plan you want may be hard
to find
• SHOWPLAN_XML - Estimated
• STATISTICS XML - Actual
76
![Page 77: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/77.jpg)
Query is Sometimes Slow
• Intermittent behavior is hard to catch
• Profiler – Not the gui
– Server-side trace
• Even with a server-side trace, capturing execution plans is more expensive (primarily disk space), exercise restraint – Data size increase from 2k to 64k for an XML Plan
per statement
– Added overhead for storage and processing
77
![Page 78: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/78.jpg)
Query Was Slow Earlier Today
• Knowing that the query is in cache is the key
• Once it’s in cache, DMV’s are your friend – sys.dm_exec_cached_plans
– sys.dm_exec_query_plan • Really large plans won’t be stored here
– sys.dm_exec_query_stats
– sys.dm_exec_plan_attributes
– sys.dm_exec_sql_text
– sys.dm_exec_text_query_plan • Used for really large plans
78
![Page 79: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/79.jpg)
Identifying Similar Queries
• Ad hoc systems need hugs/tuning too
– Identifying similar queries can suggest needed
indexes
– Similar queries could be candidates for procedures
• Multiple stored procedures may have same
query
• Query Hash to see similarities in query
• Query Plan Hash to see similarities in query plan
79
![Page 80: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/80.jpg)
Working With Large Plans
• Really large plans are hard to read
• Large plans in text
• Large plans in XML
– In XML, XQuery opens up the plan
• Using XML has other benefits
80
![Page 81: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/81.jpg)
Finish Line
• The ability to collect performance metrics on their servers as
part of an overall query tuning methodology
• An understanding of how the optimizer works in support of
writing better TSQL code as well as troubleshooting poorly
performing queries
• The ability to generate, read, and understand execution plans
from multiple sources in support of troubleshooting poorly
performing queries
• A working knowledge of DMVs that will help them identify and
fix performance issues on their servers
• The ability to address common query performance problems
81
![Page 82: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/82.jpg)
Questions?
82
![Page 83: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/83.jpg)
ADVANCED SOLUTIONS
Query Performance Tuning: Start to Finish
83
![Page 84: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/84.jpg)
Advanced Solutions
• Query Hints
• JOIN Hints
• Table Hints
• Plan Guides
• Plan Forcing
84
![Page 85: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/85.jpg)
Hints
• Are you smarter than these guys?
• Have you spent more time working on SQL
Server internals than these guys?
• Then why do you think you should take control
of the optimizer?
85
![Page 86: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/86.jpg)
Query Hints
• Unions
• Joins
• FORCE ORDER
• MAXDOP
• OPTIMIZE FOR
• ROBUST PLAN
• KEEPFIXED PLAN
86
![Page 87: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/87.jpg)
Join Hints
• Loop
• Merge
• Hash
87
![Page 88: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/88.jpg)
Table Hints
• NOEXPAND
• INDEX()
• FAST N
88
![Page 89: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/89.jpg)
Plan Guides
• For Use When You Can’t Modify Code
• Three Kinds
– Object
– SQL
– Template
• Applies Hints
89
![Page 90: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/90.jpg)
Plan Forcing
• USE PLAN
• As close as you can get to direct control of the Optimizer
• Still can’t actually control it
• Absolute Last Ditch Efforts
• Limits: – Must be a valid plan
– No INSERT, UPDATE, DELETE
– No distributed or full text queries
– Cursors can only be static or fast_forward
90
![Page 91: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/91.jpg)
Finish Line
• The ability to collect performance metrics on their servers as
part of an overall query tuning methodology
• The ability to generate, read, and understand execution plans
from multiple sources in support of troubleshooting poorly
performing queries
• An understanding of how the optimizer works in support of
writing better TSQL code as well as troubleshooting poorly
performing queries
• A working knowledge of DMVs that will help them identify and
fix performance issues on their servers
• The ability to address common query performance problems
91
![Page 92: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/92.jpg)
Questions?
92
![Page 93: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/93.jpg)
Please Complete the Evaluation Form
Pick up your evaluation form:
• In each presentation room
Drop off your completed form
• Near the exit of each presentation room
• At the registration area
93
Presented by Dell
![Page 94: Query Performance Tuning: Start to Finish - Home of the Scary DBA](https://reader036.vdocuments.site/reader036/viewer/2022071602/613d66e1736caf36b75ce737/html5/thumbnails/94.jpg)
THANK YOU!
For attending this session and
PASS SQLRally Orlando, Florida
Presented by Dell