42
© 2009 Quest Software, Inc. ALL RIGHTS RESERVED For audio, please call the phone number in your invitation email. Audio will not come through your speakers. Advanced Index Tuning

Advanced Index Tuning for SQL Server

Embed Size (px)

DESCRIPTION

How to make Microsoft SQL Server 2005 and 2008 go faster by querying the Dynamic Management Views (DMVs) to build new indexes and drop ones that aren't being used.

Citation preview

Page 1: Advanced Index Tuning for SQL Server

© 2009 Quest Software, Inc. ALL RIGHTS RESERVED

For audio, please call the phone number in your invitation email. Audio will not come through your speakers.

Advanced Index Tuning

Page 2: Advanced Index Tuning for SQL Server

2

Brent Ozar• SQL Server MVP

for Quest Software• SQLServerPedia Ed.• SQL, SAN, VM admin• Dot-com-crash

experience• Performance freak• Twitter @BrentO• Blog: www.BrentOzar.com

Photo Source http://www.flickr.com/photos/vasta/415625308/

Page 3: Advanced Index Tuning for SQL Server

3

Today’s Agenda• Passive Tuning• Active Tuning• Index Compression• The Silent Killer• Resources and Q&A

Page 4: Advanced Index Tuning for SQL Server

4

Passive Tuning with DMVs

Page 5: Advanced Index Tuning for SQL Server

5

DMV Tuning Lifecycle

Page 6: Advanced Index Tuning for SQL Server

6

Removing Indexes

Page 7: Advanced Index Tuning for SQL Server

7

Results

Page 8: Advanced Index Tuning for SQL Server

8

Why Are Writes Different?

Page 9: Advanced Index Tuning for SQL Server

9

Our Table: Items

Page 10: Advanced Index Tuning for SQL Server

10

Indexes On An “Item” Table• Index #1:

– UPC_Code• Index #2:

– SupplierID• Index #3:

– Category– QtyInStock

Photo licensed with Creative Commons from:

http://www.flickr.com/photos/revolute/1944742197/

Page 11: Advanced Index Tuning for SQL Server

11

Data In The Index

Category Qty in Stock Item ID

Bacon 45 1

Bacon 47 2

Bacon 98 3

Bacon 110 5

Page 12: Advanced Index Tuning for SQL Server

12

But When It Changes…

Category Qty in Stock Item ID

Bacon 45 1

Bacon 42 2

Bacon 200 3

Bacon 110 5

Page 13: Advanced Index Tuning for SQL Server

13

That’s Why…

Page 14: Advanced Index Tuning for SQL Server

14

Our Query

Page 15: Advanced Index Tuning for SQL Server

15

A Better Way: Includes

CREATE INDEX

IX_Category_Includes

ON dbo.Items (Category)

INCLUDE (QtyInStock)

Page 16: Advanced Index Tuning for SQL Server

16

And When It Changes…

Category Qty in Stock Item ID

Bacon 45 1

Bacon 42 2

Bacon 200 3

Bacon 110 5

Page 17: Advanced Index Tuning for SQL Server

17

Query Plan

Page 18: Advanced Index Tuning for SQL Server

18

Remember, Never SELECT *

Page 19: Advanced Index Tuning for SQL Server

19

Leave a Bread Crumb Trail

Page 20: Advanced Index Tuning for SQL Server

20

DMV Tuning Lifecycle

Page 21: Advanced Index Tuning for SQL Server

21

Missing Index Query

Page 22: Advanced Index Tuning for SQL Server

22

Okay – Now What?

Page 23: Advanced Index Tuning for SQL Server

23

When Do We Add Indexes?

Page 24: Advanced Index Tuning for SQL Server

24

DMV Tuning Lifecycle

Page 25: Advanced Index Tuning for SQL Server

25

Active Tuning: The Wizards

Page 26: Advanced Index Tuning for SQL Server

26

Danger! Danger!

Page 27: Advanced Index Tuning for SQL Server

27

The End Result

CREATE NONCLUSTERED INDEX

[_dta_index_Activity_11_1977058079__K1_K4_K7_K5_K3] ON [dbo].[Activity]

(

[ServerName] ASC,

[ActivityTypeID] ASC,

[StatusTypeID] ASC,

[StartTime] ASC,

[DatabaseID] ASC

)

Page 28: Advanced Index Tuning for SQL Server

28

Rename Each Index

CREATE NONCLUSTERED INDEX

[IX_ServerName_ActivityTypeID_StatusTypeID_StartTime_DatabaseID] ON

[dbo].[Activity]

(

[ServerName] ASC,

[ActivityTypeID] ASC,

[StatusTypeID] ASC,

[StartTime] ASC,

[DatabaseID] ASC

) ON [PRIMARY]

Page 29: Advanced Index Tuning for SQL Server

29

Makes Ongoing Tuning Easier

Page 30: Advanced Index Tuning for SQL Server

30

Active Tuning Summary• Don’t just click apply• Use smart names• Look for overlaps• Go passive first

Page 31: Advanced Index Tuning for SQL Server

31

SQL 2008 Data Compression

Page 32: Advanced Index Tuning for SQL Server

32

Estimating Compression

sp_estimate_data_compression_savings– @schema_name– @object_name– @index_id– @partition_number– @data_compression

Page 33: Advanced Index Tuning for SQL Server

33

Index Compression Drawbacks• Enterprise Edition only• No inheritance• No automation

Page 34: Advanced Index Tuning for SQL Server

34

The Silent Performance Killer

Page 35: Advanced Index Tuning for SQL Server

35

Pretend You’re SQL Server

Photo Licensed with Creative Commons From

http://www.flickr.com/photos/quacktaculous/3143079032/

Page 36: Advanced Index Tuning for SQL Server

36

13% to 460%

Faster

Page 37: Advanced Index Tuning for SQL Server

37

Absolutely No:• App changes• Vendor issues• Testing required• Guessing on indexes• Backfires

Page 38: Advanced Index Tuning for SQL Server

38

Not All Unicorns and Roses• Standard Edition: Offline Only• Enterprise Edition: Most Online• Generates a lot of transaction logs

Page 39: Advanced Index Tuning for SQL Server

39

The Native Solution

Page 40: Advanced Index Tuning for SQL Server

40

The Better Way: T-SQL Code

Page 41: Advanced Index Tuning for SQL Server

41

Don’t Reinvent The Wheel

Page 42: Advanced Index Tuning for SQL Server

42

http://www.brentozar.com/go/faster