Advanced Index Tuning for SQL Server
-
Upload
quest-software -
Category
Technology
-
view
4.420 -
download
5
description
Transcript of Advanced Index Tuning for SQL Server
![Page 1: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/1.jpg)
© 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](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/2.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/3.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/4.jpg)
4
Passive Tuning with DMVs
![Page 5: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/5.jpg)
5
DMV Tuning Lifecycle
![Page 6: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/6.jpg)
6
Removing Indexes
![Page 7: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/7.jpg)
7
Results
![Page 8: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/8.jpg)
8
Why Are Writes Different?
![Page 9: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/9.jpg)
9
Our Table: Items
![Page 10: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/10.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/11.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/12.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/13.jpg)
13
That’s Why…
![Page 14: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/14.jpg)
14
Our Query
![Page 15: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/15.jpg)
15
A Better Way: Includes
CREATE INDEX
IX_Category_Includes
ON dbo.Items (Category)
INCLUDE (QtyInStock)
![Page 16: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/16.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/17.jpg)
17
Query Plan
![Page 18: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/18.jpg)
18
Remember, Never SELECT *
![Page 19: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/19.jpg)
19
Leave a Bread Crumb Trail
![Page 20: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/20.jpg)
20
DMV Tuning Lifecycle
![Page 21: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/21.jpg)
21
Missing Index Query
![Page 22: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/22.jpg)
22
Okay – Now What?
![Page 23: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/23.jpg)
23
When Do We Add Indexes?
![Page 24: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/24.jpg)
24
DMV Tuning Lifecycle
![Page 25: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/25.jpg)
25
Active Tuning: The Wizards
![Page 26: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/26.jpg)
26
Danger! Danger!
![Page 27: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/27.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/28.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/29.jpg)
29
Makes Ongoing Tuning Easier
![Page 30: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/30.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/31.jpg)
31
SQL 2008 Data Compression
![Page 32: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/32.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/33.jpg)
33
Index Compression Drawbacks• Enterprise Edition only• No inheritance• No automation
![Page 34: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/34.jpg)
34
The Silent Performance Killer
![Page 35: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/35.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/36.jpg)
36
13% to 460%
Faster
![Page 37: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/37.jpg)
37
Absolutely No:• App changes• Vendor issues• Testing required• Guessing on indexes• Backfires
![Page 38: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/38.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/39.jpg)
39
The Native Solution
![Page 40: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/40.jpg)
40
The Better Way: T-SQL Code
![Page 41: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/41.jpg)
41
Don’t Reinvent The Wheel
![Page 42: Advanced Index Tuning for SQL Server](https://reader033.fdocuments.net/reader033/viewer/2022061214/549a0b93b47959f6498b4698/html5/thumbnails/42.jpg)
42
http://www.brentozar.com/go/faster