Transcript
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


Recommended