natural born killers, performance issues to avoid
DESCRIPTION
SQL Server is now a mature RDBMS platform. In this session Richard Douglas walks through a number of areas of the product that are misused or misunderstood. The session promotes good table and index design as well as when to use temporary tables and table variables.TRANSCRIPT
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?