natural born killers, performance issues to avoid

Post on 08-Jul-2015

246 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

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: Richard.Douglas@Quest.comRichard_Douglas@Dell.com

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?

Thank you

Richard_Douglas@Dell.com@SQLRich

http://bit.ly/11jr4fC

top related