11. Where Do We Start?
Hardware
Windows
SQL Server
Tables,
Indexes
Query
12. Capture Metrics With Perfmon
• Performance Monitor, aka Perfmon
• Ships with all Windows versions
• Polls any server from your desktop
• Pulls performance metrics
• Writes them to a file
• Requires some OS permissions
• Does not include alerts or analytics
14. Memory Counters
• Memory – Available Mbytes
• Paging File - % Usage
• SQLServer:Buffer Manager –
– Buffer cache hit ratio
– Page life expectancy
• SQLServer:Memory Manager –
Memory Grants Pending
15. Storage Metrics: Physical Disk
• Avg. Disk Queue Length
• Avg. Disk sec/Read
• Avg. Disk sec/Write
• Disk Reads/sec
• Disk Writes/sec
• % Disk Time
16. CPU & Other Metrics
• Processor - % Processor Time
• System – Processor Queue Length
• SQLServer:General Statistics –
User Connections
21. What To Look For, In Order
• System – Processor Queue Length
• Memory – Available Mbytes
• Lock pages in memory!
22. What To Look For Next
• Disk metrics on the page file drive
• Disk metrics on the log file drive
• Disk metrics on the data file drive
• Disk metrics on the TempDB drive
23. Got Everything on One Drive?
• Narrow it down with the DMV
sys.dm_io_virtual_file_stats
25. Columns to Capture
What’s Going On What The Impact Was
• Text Data • CPU
• DatabaseID and/or • Reads
DatabaseName • Writes
• Login Name • Duration
• Host Name • Start Time
• Application Name • End Time
29. Correlate Metrics & Trace
• Show a cause and effect relationship
• Fields to mentally “join” on:
– Date/Time ranges
– CPU
– Reads/Writes
– Duration
32. Consistent and Repeatable
• 100 users accessing the web site
• Closing a typical financial period
• 10 users running a report
• Importing 100,000 records for a nightly
ETL process
• Think scripts, think load generation tool
• Capture statistics during test run
33. When To Take A Picture
Before
• Adding new hardware
• Installing a SQL
Server service pack
• Changing storage
configurations After
• New application
versions
• Every quarter
34. Plus Monitoring For…
Before
• Things break
• Populations change
over time
• Budgeting
• Need to enforce After
standards
• We’re not the only
ones working on the
house
35. Save Perfmon& Profiler Data
• Central file share
• Even better: in a database
• Name by server, by date
• Revisit every budget season
• Use for new hire training
43. Sample Problem #1
• Metrics tell us:
– Very high disk queue
lengths on data drive
• Trace tells us:
– Report queries doing
table scans w/o indexes
– Many scheduled reports
run simultaneously
44. Ways We Can Mitigate It
• Add covering indexes
• Modify existing indexes
• Add hard drives to the data file array
• Add memory to cache scanned tables
• Run reports serially, not all at once
45. Sample Problem #2
• Metrics tell us:
– Page file drive queue lengths
average >20
– Page file use averages >1%
– Available memory averages less
than 250mb
• Trace tells us:
– No unusual queries
47. Ways We Can Mitigate It
• Add memory and enable AWE/PAE
• Add memory and upgrade to 64-bit
• Move the app to its own server
• Reduce SQL’s min/max memory sizes
48. Sample Problem #3
• Metric looks OK, but
every 15 minutes:
– Long drive queues on the
log file drive
– Page life expectancy
drops near zero
– Network traffic jumps
• Trace tells us:
– Transaction log backups
are running
49. Ways We Can Mitigate It
• Stop doing log backups
• Put the databases in simple mode
• Add drives to the transaction log array
• Throttle the transaction log backups
50. Sample Problem #4
• Metrics tell us:
– CPU average is high
– Disk, memory look OK
• Trace tells us:
– Queries are using
cursors
– Operating on
individual records, not
sets
51. How We Can Mitigate It
• Buy really fast processors
• Spend a lot on licensing
• Change cursor to set-based query
52. Wrapping Things Up
• Double-check the event log first
• Don’t get overwhelmed: focus with the
Metric – Trace – Mitigation process
• Show a clear cause and effect
• Use pro tools to get an edge
53. Resources On The Web
• My blog about Perfmon:
www.BrentOzar.com/perfmon
• Excel Table Analysis Tools for the Cloud:
www.SQLServerDataMining.com/cloud
• ClearTrace:
http://www.cleardata.biz/cleartrace/
• SQL Server community:
SQLServerPedia.com