Natural Born Killers, Performance issues to avoid
-
Upload
richard-douglas -
Category
Technology
-
view
246 -
download
0
description
Transcript of Natural Born Killers, Performance issues to avoid
Natural Born Killers, performance issues to avoid
Richard Douglas
2 Natural Born Killers
Natural Born Killer
http://www.flickr.com/photos/merille/4747615138/sizes/z/in/photostream/
3 Natural Born Killers
4 Natural Born Killers
Source: http://cheezburger.com/View/5939764992
5 Natural Born Killers
Adhering to best practices?
http://www.flickr.com/photos/12693492@N04/1338123903/sizes/m/in/photostream/
6 Natural Born Killers
Your host
• Richard Douglas
• Systems Consultant
• SQL Server MCITPro
• Maidenhead SQL User Group Leader
• Blog: http://SQL.RichardDouglas.co.uk
• Twitter: @SQLRich
• Email: [email protected][email protected]
7 Natural Born Killers
Agenda
• Statistics
• Table Design
• Scalar UDF’s
• Indices
• Key lookups
• Sargability
• Table variables
• Parameter sniffing
8 Natural Born Killers
Statistics
• SQL uses a cost based optimizer
• Costs influenced by statistics
9 Natural Born Killers
Statistics
• Creating Statistics– Automatic
– Manual
– CREATE STATISTICS
– sp_CreateStats
• Updating Statistics
• Sp_UpdateStats
• UPDATE STATISTICS
Permanent Table Temporary Table
1st record 1st record
- 6 records
LT 500 recs, 500 changes LT 500 recs, 500 changes
GT 500 recs, 500 changes + 20%
GT 500 recs, 500 changes + 20%
10 Natural Born Killers
Table Design
http://www.flickr.com/photos/aresauburnphotos/2699269321/sizes/o/in/photost
ream/
11 Natural Born Killers
Example of bad design
12 Natural Born Killers
Example of a better design
13 Natural Born Killers
Table Design – Size comparison
14 Natural Born Killers
Good table design benefits
• Minimise the CPU overhead.
• Increase the number of records in the buffer cache.
• Reduce the amount of physical disk IO.
• Reduce the amount of network traffic.
• Reduce the data file size(s).
• Reduce the working size of the Transaction Log.
• Reduce Full/Diff /T-Log backup file size.Thereby increasing your ability to deliver your RTO.
• Keep transaction time to a minimum.
19 Natural Born Killers
Scalar User Defined Functions
• The Good– Re-Usable code
• The Bad– Runs once per record in record set
– They don’t take advantage of parallelism
– They use Nested Loop joins regardless
• The Ugly– So ugly it’s hidden from the query plan and IO statistics
20 Natural Born Killers
Scalar UDF Solutions and Alternatives
• If you have to use them:– View the actual IO usage in Profiler
• If you can replace them:– Look at Table Value Functions
– Look at CLR
21 Natural Born Killers
Indices
22 Natural Born Killers
It’s all about DWI knowledge:
Indexing strategies
D W Ia
t
a
o
r
k
l
o
a
d
n
t
e
r
n
a
l
s
23 Natural Born Killers
Bad example; Surname, Firstname, Middle Initial
Golden Rules for Clustered Indexes
• Narrow
• Static
• Progressive
• Unique
• Fixed width
• Not Null
Impacts nonclusteredindexes
Fragmentation
Space impact
This example will have 13 bytes of overhead alone;
• 4 byte uniquifier
• 2 byte variable offset + 6 bytes for variable length fields
• 1 byte for NULL values and NULL bitmap
24 Natural Born Killers
Golden Rules for NonClustered Indexes
• Have an optimal clustered key
• Not narrow
• Reduce unnecessary overhead
– Fixed Width
– Not null
• Consolidate
• Index foreign keys
25 Natural Born Killers
Key Lookups – The silent killer
26 Natural Born Killers
Sargability
• SARGable – “Search ARGument able”
• T-SQL functions around a predicate can break SARGability
• Some caveats to remember
27 Natural Born Killers
Table Variables Vs. Temp Tables
Table Variables
• Fast when used with small data sets.
• Have a limited scope
• Use less locking and logging resources than temp tables– http://sql.richarddouglas.co.uk/archive/2011/06/rollback-gotchas-
part-2-2.html
• Estimated statistics always show 1 record
• Cannot be altered after they are declared
• Mythbuster - MAY be memory only, this isn’t guaranteed
• Generally faster with smaller data sets
28 Natural Born Killers
Table Variables Vs. Temp Tables
Temp Tables
• Uses statistics– Stat population will cause recompiles (statement level in 2005 +)
– Can create better plans
• Wider scope
• Can be rolled back
• Can be altered after creation
• Generally faster with larger data sets
29 Natural Born Killers
Parameter Sniffing
• What is it?– It’s all a matter of statistics
• How do I know when it will affect me?– Monitor the IO and CPU
– This means baselining your environment
• What are my options?– Rewrite dynamic queries
– Query Hints:
– WITH RECOMPILE
– OPTIMIZE FOR
– Plan Guides
30 Natural Born Killers
Demos
31 Natural Born Killers
Summary
• Statistics
• Table Design
• Scalar UDF’s
• Indices
• Key lookups
• Sargability
• Table variables
• Parameter sniffing
32 Dell SoftwareUnderstanding Indices
Any questions?