Download The Dynamic Management Objects Coloring Book

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
How Good Is Your Indexing
Strategy?
TIM FORD
MICROSOFT DATA PLATFORM MVP
FOUNDER: SQL CRUISE & B-SIDE CONSULTING
SENIOR DBA: SURVEYMONKEY
WHO IS TIM?
MVP Since 2009
SQL Cruise Since 2010
Author
Senior DBA
PASS Board of
Directors
CONTACT POINTS
thesqlagentman.com
SQLCruise.com
[email protected]
@sqlagentman
@sqlcruise
GOALS
FAMILIARITY WITH INDEX-RELATED SYSTEM OBJECTS
UNDERSTAND HOW THE PIECES FIT TOGETHER
UNDERSTAND WHAT QUESTIONS CAN BE ANSWERED
AGENDA
INTRODUCTION: WHY ARE INDEXES IMPORTANT
HOW DOES INDEXING GET IN THE WAY?
WHAT MAKES FOR A GOOD INDEX?
TOUR THE INDEXING DYNAMIC MANAGEMENT OBJECTS
MY GIFT TO YOU: THE SCRIPTS AND WHAT THEY ANSWER
WHY INDEX?
HOW DOES INDEXING GET IN THE WAY?
WHAT MAKES FOR A “GOOD” INDEX?
INDEXING STRATEGY
HIGH READ:WRITE RATIO
APPROPRIATENESS
REASONABLE FILL FACTOR
HEALTHY FRAGMENTATION
KEY ANALYSIS POINTS
INDEXING DMOs
TOOLS AND ANALYSIS
USAGE COUNTERS
PHYSICAL METRICS
LOCK/LATCH/SPLIT STATISTICS
MISSING INDEX DMOs
DM_DB_MISSING_INDEX_COLUMNS
DM_DB_MISSING_INDEX_DETAILS
DM_DB_MISSING_INDEX_GROUP_STATS
DM_DB_MISSING_INDEX_GROUPS
INDEXING DMOs
DM_DB_INDEX_USAGE_STATS
DM_DB_INDEX_PHYSICAL_STATS
DM_DB_INDEX_OPERATIONAL_STATS
USAGE STATISTICS
SELECT *
FROM sys.dm_db_index_usage_stats
Returns cumulative scan, seek, lookup, update counts and last action times for these
operations for each heap or index in the database for both user actions as well as
system operations against these objects
CRITICAL COLUMNS
COLUMN NAME
WHY IT MATTERS
DATABASE_ID
IDENTIFICATION
OBJECT_ID
IDENTIFICATION
INDEX_ID
IDENTIFICATION
USER_SEEKS
COUNT OF USER-INITIATED SEEKS
USER_SCANS
COUNT OF USER-INITIATED SCANS
USER_LOOKUPS
COUNT OF USER-INITIATED LOOKUPS
USER_UPDATES
COUNT OF USER-INITIATED WRITES
LAST_USER_SEEK … UPDATE
LAST TIME THIS OPERATION HAPPENED
PHYSICAL METRICS
SELECT *
FROM sys.dm_db_index_physical_stats
(database_id
, object_id
, index_id
, partition_id
, ‘limited’ | ‘detailed’ | ‘sampled’)
Returns fragmentation, structural definitions, space usage, and compression metrics
for each partition of a table or index in the database
CRITICAL COLUMNS
COLUMN NAME
WHY IT MATTERS
DATABASE_ID
IDENTIFICATION
OBJECT_ID
IDENTIFICATION
INDEX_ID
IDENTIFICATION
PARTITION_ID
IDENTIFICATION
INDEX_TYPE_DESC
ALLOC_UNIT_TYPE_DESC
AVG_FRAGMENTATION_IN_PCT
PAGE_COUNT
RECORD_COUNT
AVG_RECORD_SIZE_IN_BYTES
HEAP | CLUSTERED | NON-CLUSTERED
LOB OR NON-LOB DATA
FRAGMENTATION METRIC
SIZE
HOW MANY RECORDS
AVERGAGE SIZE OF EACH RECORD
OPERATIONAL STATISTICS
SELECT *
FROM sys.dm_db_index_operational_stats
(database_id
, object_id
, index_id
, partition_id)
Returns cumulative I/O, locking, latching, and access method activity as well as page
split metrics for each partition of a table or index in the database
CRITICAL COLUMNS
COLUMN NAME
WHY IT MATTERS
DATABASE_ID
IDENTIFICATION
OBJECT_ID
IDENTIFICATION
INDEX_ID
IDENTIFICATION
PARTITION_ID
IDENTIFICATION
LEAF_ALLOCATION_COUNT
NONLEAF_ALLOCATION_COUNT
LEAF-LEVEL PAGE SPLITS
NON-LEAF-LEVEL PAGE SPLITS
CRITICAL COLUMNS - continued
COLUMN NAME
WHY IT MATTERS
PAGE_LOCK_WAIT_COUNT
NUMBER OF PAGE LOCK WAITS
PAGE_LOCK_WAIT_IN_MS
PAGE LOCK WAITS IN MILLISECONDS
PAGE_LATCH_WAIT_COUNT
NUMBER OF PAGE LATCH WAITS
PAGE_LATCH_WAIT_IN_MS
PAGE LATCH WAITS IN MILLISECONDS
PAGE_IO_LATCH_WAIT_COUNT
NUMBER OF PAGE IO LATCH WAITS
PAGE_IO_LATCH_WAIT_IN_MS
PAGE IO LATCH WAITS IN MILLISECONDS
SYSTEM VIEWS
TOOLS AND ANALYSIS
INDEX METADATA
INDEX COLUMN METADATA
TABLE OBJECT METADATA
COLUMN METADATA
DATA TYPE METADATA
OBJECT NAME
SYS.INDEXES
SYS.INDEX_COLUMNS
SYS.TABLES
SYS.COLUMNS
SYS.TYPES
database_id
IXPS
IXUS
IXOS
INDEX
METADATA
ECOSYSTEM
object_id
index_id
DMOs
System Views
sys.tables
sys.columns
sys.indexes
sys.index_columns
column_id
KEY
system_type_id
&
DMV
user_type_id
column
sys.types
DMF
SYSTEM VIEW
QUESTIONS… ANSWERED
USAGE
Which tables are read from | written to most | least?
Which tables have no activity since last restart | rebuild?
What are the use patterns for all indexes?
PHYSICAL
What are my largest indexes?
Which indexes are fragmented?
Which indexes that are most used for reads most fragmented?
PERFORMANCE
Which indexes have the most page splits?
Which indexes have the most latching | locking time?
Which indexes have the highest average latching | locking time per user interaction?
Which indexes have the most table lock promotion attempts | successes?
Are there any missing indexes that could help reduce latch | lock | IO latch waits?
INFORMATIONAL
What indexes are on (this) table?
CONTACT POINTS
thesqlagentman.com
SQLCruise.com
[email protected]
@sqlagentman
@sqlcruise
Related documents