Transcript
Page 1: Natural Born Killers, Performance issues to avoid

Natural Born Killers, performance issues to avoid

Richard Douglas

Page 2: Natural Born Killers, Performance issues to avoid

2 Natural Born Killers

Natural Born Killer

http://www.flickr.com/photos/merille/4747615138/sizes/z/in/photostream/

Page 3: Natural Born Killers, Performance issues to avoid

3 Natural Born Killers

Page 4: Natural Born Killers, Performance issues to avoid

4 Natural Born Killers

Source: http://cheezburger.com/View/5939764992

Page 5: Natural Born Killers, Performance issues to avoid

5 Natural Born Killers

Adhering to best practices?

http://www.flickr.com/photos/12693492@N04/1338123903/sizes/m/in/photostream/

Page 6: Natural Born Killers, Performance issues to avoid

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]

Page 7: Natural Born Killers, Performance issues to avoid

7 Natural Born Killers

Agenda

• Statistics

• Table Design

• Scalar UDF’s

• Indices

• Key lookups

• Sargability

• Table variables

• Parameter sniffing

Page 8: Natural Born Killers, Performance issues to avoid

8 Natural Born Killers

Statistics

• SQL uses a cost based optimizer

• Costs influenced by statistics

Page 9: Natural Born Killers, Performance issues to avoid

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%

Page 10: Natural Born Killers, Performance issues to avoid

10 Natural Born Killers

Table Design

http://www.flickr.com/photos/aresauburnphotos/2699269321/sizes/o/in/photost

ream/

Page 11: Natural Born Killers, Performance issues to avoid

11 Natural Born Killers

Example of bad design

Page 12: Natural Born Killers, Performance issues to avoid

12 Natural Born Killers

Example of a better design

Page 13: Natural Born Killers, Performance issues to avoid

13 Natural Born Killers

Table Design – Size comparison

Page 14: Natural Born Killers, Performance issues to avoid

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.

Page 15: Natural Born Killers, Performance issues to avoid
Page 16: Natural Born Killers, Performance issues to avoid

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

Page 17: Natural Born Killers, Performance issues to avoid

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

Page 18: Natural Born Killers, Performance issues to avoid

21 Natural Born Killers

Indices

Page 19: Natural Born Killers, Performance issues to avoid

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

Page 20: Natural Born Killers, Performance issues to avoid

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

Page 21: Natural Born Killers, Performance issues to avoid

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

Page 22: Natural Born Killers, Performance issues to avoid

25 Natural Born Killers

Key Lookups – The silent killer

Page 23: Natural Born Killers, Performance issues to avoid

26 Natural Born Killers

Sargability

• SARGable – “Search ARGument able”

• T-SQL functions around a predicate can break SARGability

• Some caveats to remember

Page 24: Natural Born Killers, Performance issues to avoid

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

Page 25: Natural Born Killers, Performance issues to avoid

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

Page 26: Natural Born Killers, Performance issues to avoid

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

Page 27: Natural Born Killers, Performance issues to avoid

30 Natural Born Killers

Demos

Page 28: Natural Born Killers, Performance issues to avoid

31 Natural Born Killers

Summary

• Statistics

• Table Design

• Scalar UDF’s

• Indices

• Key lookups

• Sargability

• Table variables

• Parameter sniffing

Page 29: Natural Born Killers, Performance issues to avoid

32 Dell SoftwareUnderstanding Indices

Any questions?

Page 30: Natural Born Killers, Performance issues to avoid

Thank you

[email protected]@SQLRich

http://bit.ly/11jr4fC


Top Related