Upload
learnitfirst
View
1.515
Download
0
Embed Size (px)
DESCRIPTION
What are some of the tools for monitoring available in SQL Server 2008? How can I customize these tools to best fit my needs? This chapter covers monitoring tools such as SQL Server Profiler, Performance Monitor, PAL, Data Collector, as well as DMVs and DMFs.
Citation preview
p. 1
Chapter 9: Monitoring and Performance
1
Course 157: SQL Server 2008 Database Administration
Presented by Scott Whigham
p. 2
Ove
rvie
w • Chapter Introduction
• Tools for Monitoring
• SQL Server Profiler M
on
ito
rin
g • Understanding and Using the DMVs
• PerfMon
• Data Collector
What We’re Going to Cover
p. 3
• Chapter 9 is about performance and exception monitoring your server
• We’ll start with the basics (using Profiler) and end with new features in SQL Server 2008 (Data Collector)
Chapter Introduction
p. 4
Ove
rvie
w • Chapter Introduction
• Tools for Monitoring
• SQL Server Profiler M
on
ito
rin
g • Understanding and Using the DMVs
• PerfMon
• Data Collector
What We’re Going to Cover
p. 5
• There are many built-in tools to monitor performance and health:– Activity Monitor and sp_who
• Covered in Chapter 5!
– SQL Server Profiler• Detailed view of statements issued against instance
– Dynamic Management Views (DMVs)• “Live” view of server health and activity
– Performance counters and objects (“PerfMon”)• “Live” view of server health and activity
– Data Collector• Historical view of server health and activity
Tools of Performance Monitoring
p. 6
Profiler DMVsPerfMon
Data Coll.
Provides “live”, real-time reporting?
Can do trend analysis and historical reporting? Requires manual load
Requires manual load
Requires manual load
Can view SQL issued?
Provides detail-level view or summary? Detail Depends… Summary Summary
Can be used to diagnose performance problems?
Level of impact on server Low None Negligible Low-Hi
Difficulty level 100-300 200-400 200-300 300-500
Tools of Performance Monitoring
“But Mr. Scott, how do I know when to use each one?”
p. 7
• Let’s play with Profiler!
In the next video…
p. 8
Chapter 9: Monitoring and Performance
8
Course 157: SQL Server 2008 Database Administration
Presented by Scott Whigham
p. 9
Ove
rvie
w • Chapter Introduction
• Tools for Monitoring
• SQL Server Profiler M
on
ito
rin
g • Understanding and Using the DMVs
• PerfMon
• Data Collector
What We’re Going to Cover
p. 10
• SQL Server Profiler is a tool for monitoring real-time queries issued against your server– “Old Faithful” - been around for years
– Requires sysadmin or ALTER TRACE server permission
SQL Server Profiler
p. 11
SQL Server Profiler
p. 12
• DBAs use traces to monitor statements sent to SQL Server– We’ve already seen how SQL Server uses “default
traces” in Chapter 7
• Running traces will have an impact on server performance– How much? It depends on how much you trace
SQL Server Profiler
p. 13
• SQL Server Profiler is the GUI for defining, viewing, and replaying traces– It does not have to be running to create a trace
– Many DBAs create their traces via Profiler and then script out to jobs
SQL Server Profiler
p. 14
• Running Profiler on a “live” system adds to an already stressful situation– Particularly if run interactively on the server
• If you must run Profiler against a “live” server, run it remotely
• Adds network overhead but this is almost never an issue today
SQL Server Profiler
p. 15
• Trace data can be stored:– In a .trc file (fastest)
– In a SQL Server table
• .trc files can be configured to rollover to a new file after a certain threshold
• Can load .trc file contents into SQL Server table after trace for maximum flexibility!
SQL Server Profiler
p. 16
• After trace is complete, you can export results
SQL Server Profiler
p. 17
• Tips on working with Profiler– Traces can have filters to help minimize the noise
• The better you filter, the less of an impact you put on the server
– Being able to write queries against the trace results can help you identify many common trends and problems
• This requires you load the trace data into a table!
SQL Server Profiler
p. 18
• Let’s play with Profiler!
In the next video…
p. 19
Chapter 9: Monitoring and Performance
19
Course 157: SQL Server 2008 Database Administration
Presented by Scott Whigham
p. 20
Ove
rvie
w • Chapter Introduction
• Tools for Monitoring
• SQL Server Profiler M
on
ito
rin
g • Understanding and Using the DMVs
• PerfMon
• Data Collector
What We’re Going to Cover
p. 21
• DBAs use Dynamic Management Views (“DMVs”) and Dynamic Management Functions (“DMFs”) to peek under the covers– In the sys schema and begin with dm_
– Used to get up-to-the-second performance information during critical time
– Often need to JOIN many together to come up with desired results
Dynamic Management Views
p. 22
Profiler DMVsPerfMon
Data Coll.
Provides “live”, real-time reporting?
Can do trend analysis and historical reporting? Requires manual load
Requires manual load
Requires manual load
Can view SQL issued?
Provides detail-level view or summary? Detail Depends… Summary Summary
Can be used to diagnose performance problems?
Level of impact on server Low None Negligible Low-Hi
Difficulty level 100-300 300-500 200-300 300-500
Tools of Performance Monitoring
Reminder…
p. 23
• There are too many DMxs to cover each one so we’ll cover concepts and core DMxs– Over 130 DMVs and DMFs in SQL Server 2008!
• It is important for DBAs to maintain a script library
Dynamic Management Views
p. 24
• The easiest way to get to know the DMVs/DMFs is to categorize them– Below are the more popular categories for
performance monitoring
Dynamic Management Views
Category DMx prefix
Database sys.dm_db_
Execution/Sessions sys.dm_exec_
IO sys.dm_io_
OS sys.dm_os_
Transactions sys.dm_tran_
p. 25
• Intellisense can help you greatly!
Dynamic Management Views
p. 26
• Object Explorer can also help
Dynamic Management Views
p. 27
• You can also query system views for full list
SELECT name, type_desc
FROM sys.system_objects
WHERE schema_id=4
AND name LIKE 'dm_%‘
ORDER BY name
DMV and DMF Query
p. 28
DMV and DMF Query Results
p. 29
• Database category: – 16+ DMVs and DMFs
SELECT name, type_desc
FROM sys.system_objects
WHERE schema_id=4
AND name LIKE 'dm_db%'
Database Category
p. 30
• We’ll take a look at a few categories and examples
In the next video…
p. 31
Chapter 9: Monitoring and Performance
31
Course 157: SQL Server 2008 Database Administration
Presented by Scott Whigham
p. 32
Ove
rvie
w • Chapter Introduction
• Tools for Monitoring
• SQL Server Profiler M
on
ito
rin
g • Understanding and Using the DMVs
• PerfMon
• Data Collector
What We’re Going to Cover
p. 33
• Reminder: the more popular categories for performance monitoring
Dynamic Management Views
Category DMx prefix
Database sys.dm_db_
Execution/Sessions sys.dm_exec_
IO sys.dm_io_
OS sys.dm_os_
Transactions sys.dm_tran_
p. 34
• Database category: – 16+ DMVs and DMFs
SELECT name, type_desc
FROM sys.system_objects
WHERE schema_id=4
AND name LIKE 'dm_db%‘
ORDER BY name
Database Category
p. 35
• From a performance standpoint, you will spend a lot of time in the Database category– Primarily looking at table, index, and partition
information
• Size, fragmentation
• Missing indexes
• Index use
Database Category
p. 36
• Common index-related DMVs in the Database Category– sys.dm_db_missing_index_details
returns information about indexes that could potentially help speed up the system
– sys.dm_db_index_usage_stats can tell you whether an index is being used and, if so, in what way
Database Category
p. 37
• Common index-related DMFs in the Database Category– sys.dm_db_index_physical_stats is
one way to identify fragmentation (see Chapter 8!)
– sys.dm_db_index_operational_stats
is similar to the DMV sys.dm_db_index_usage_statsyet only includes actual execution events instead of plan generation events
Database Category
p. 38
• We’ll take a look at writing queries using the DMVs and DMFs in the Database category
In the next video…
p. 39
Chapter 9: Monitoring and Performance
39
Course 157: SQL Server 2008 Database Administration
Presented by Scott Whigham
p. 40
Ove
rvie
w • Chapter Introduction
• Tools for Monitoring
• SQL Server Profiler M
on
ito
rin
g • Understanding and Using the DMVs
• PerfMon
• Data Collector
What We’re Going to Cover
p. 41
• Let’s look at the other categories now…
Dynamic Management Views
Category DMx prefix
Database sys.dm_db_
Execution/Sessions sys.dm_exec_
IO sys.dm_io_
OS sys.dm_os_
Transactions sys.dm_tran_
p. 42
• Execution/Session category: – 20+ DMVs and DMFs
SELECT name, type_desc
FROM sys.system_objects
WHERE schema_id=4
AND name LIKE 'dm_exec%'
Execution/Session Category
p. 43
• The Execution/Session category will help you spy on people– That’s what you really want to do, isn’t it?
– Can also view specific query information
• Plans, text, stats, caching information
Execution/Session Category
p. 44
• There is at least one DMF in this category that you definitely want to know
–sys.dm_exec_sql_text allows you to
see the query text a user submits
• By itself, it is not that useful but combined with other Execution/Session DMVs it is very powerful
• Accepts one parameter - the memory location of the query plan -
– Populated via a column found in other sys.dm_exec_DMVs
Execution/Session Category
p. 45
• A common DMV in this category is:– sys.dm_exec_query_stats allows you to see
metrics about queries submitted to server
• Reads, writes, waits, execution count, etc
• plan_handle column is the column to pass to sys.dm_exec_sql_text to return SQL
Execution/Session Category
p. 46
SELECT TOP(50) sql.text
, qs.last_execution_time
, qs.execution_count
, qs.last_elapsed_/1000000.0 as
ElapsedTimeInSecondstime
FROM sys.dm_exec_query_stats qs
CROSS APPLY
sys.dm_exec_sql_text(qs.sql_handle) AS
sql
ORDER BY qs.execution_count DESC
Return 50 most-run queries
p. 47
Return 50 most-run queries
p. 48
• Other common DMVs in this category are– sys.dm_exec_procedure_stats same as
query_stats yet only returns stored procedure info
– sys.dm_exec_cached_plans gives you info on the cached query plans
• Is it compiled or adhoc?
• How many times has it been used?
Execution/Session Category
p. 49
• Spying on users is easy!– sys.dm_exec_sessions is one row for each
authenticated session
-- Returns all non-internal sessions
SELECT * FROM sys.dm_exec_sessions
WHERE session_id>50
Execution/Session Category
p. 50
• We’ll write several queries and see the Execution/Session category in action
In the next video…
p. 51
Chapter 9: Monitoring and Performance
51
Course 157: SQL Server 2008 Database Administration
Presented by Scott Whigham
p. 52
Ove
rvie
w • Chapter Introduction
• Tools for Monitoring
• SQL Server Profiler M
on
ito
rin
g • Understanding and Using the DMVs
• PerfMon
• Data Collector
What We’re Going to Cover
p. 53
• Let’s look at the IO and OS categories now to help diagnose disk pressure
Dynamic Management Views
Category DMx prefix
Database sys.dm_db_
Execution/Sessions sys.dm_exec_
IO sys.dm_io_
OS sys.dm_os_
Transactions sys.dm_tran_
p. 54
• IO category: – 4+ DMVs and DMFs
SELECT name, type_desc
FROM sys.system_objects
WHERE schema_id=4
AND name LIKE 'dm_io_%‘
ORDER BY name
IO Category
p. 55
• The most common item in this category is– sys.dm_io_virtual_file_stats()
returns information about usage of the database files
• Reads, writes, IO waits, size
• Accepts two parameters:– database_id - use NULL for all databases
– file_id - the file_id from sys.database_files; use NULL for all files
IO Category
p. 56
• sys.dm_io_virtual_file_stats
returns several columns:
IO Category
Column Description
sample_ms Milliseconds since server was restarted
num_of_reads Physical reads of objects in database file
num_of_bytes_read Large textual-based columns will affect this greatly
io_stall_read_ms Total time a user process waited for IO to this file
num_of_writes, num_of_bytes_written, io_stall_write_ms
Database write activity
io_stall Total amount of waits reading /writing to this file
p. 57
• Here are some things to monitor with dm_io_virtual_file_stats()
– Look at total reads+writes to find “most active”
– Look at io_stall to identify files that might benefit from new disks
• All databases have stalls; the important metric is “What percentage of the uptime of the server am I having stalls?”
• Compare read/write stalls on log and data file to identify which could benefit from new/faster disks
IO Category
p. 58
-- View IO stats for all DBs on instance:
SELECT DB_NAME(mf.database_id) AS DB
, mf.physical_name, mf.type_desc
, vfs.*
FROM
sys.dm_io_virtual_file_stats(null,null)vfs
JOIN sys.master_files mf
ON mf.database_id = vfs.database_id
AND mf.file_id = vfs.file_id
ORDER BY DB_NAME(mf.database_id)
IO DMF
p. 59
IO DMF
p. 60
-- Aggregate total IO since last restart:
SELECT
DB_NAME(vfs.database_id) AS database_name,
CAST(SUM(vfs.num_of_bytes_read +
vfs.num_of_bytes_written) / 1048576.
AS DECIMAL(12, 2)) AS IO_MB
FROM sys.dm_io_virtual_file_stats(NULL, NULL) vfs
GROUP BY vfs.database_id
ORDER BY IO_MB DESC
IO DMF
p. 61
• The OS category is one of the largest– 36+ DMVs (no DMFs!)
SELECT name, type_desc
FROM sys.system_objects
WHERE schema_id=4
AND name LIKE 'dm_os_%‘
ORDER BY name
OS Category
p. 62
• You can use this category to find waiting tasks:– sys.dm_os_wait_stats - aggregated info on
dozens and dozens of wait types
– sys.dm_os_waiting_tasks - detail info on waits for a specific resource
• Hint: use dm_os_wait_stats to identify the areas of contention and then dm_os_waiting_tasks to view task information
OS Category
p. 63
• These two DMVs are accumulative– Their statistics are the totals since SQL Server
service has been started
• To track effectively over time, it is necessary to reset periodically– Common to store in a table for historical
perspective– DBCC SQLPERF(‘<dmv_name>’, CLEAR)
OS Category
p. 64
-- Current wait info:
SELECT wait_type, wait_time_ms / 1000. as wait_time_s
FROM sys.dm_os_wait_stats
ORDER BY wait_time_ms DESC
-- Clear out stats:
DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR)
-- Run this at a later time to view waits since CLEAR
SELECT wait_type, wait_time_ms / 1000. as wait_time_s
FROM sys.dm_os_wait_stats
ORDER BY wait_time_ms DESC
OS Category
p. 65
OS Category
p. 66
• To identify disk pressure, you can look in sys.dm_os_wait_stats for specific wait types– Order by wait_time_ms DESC to identify most often
waits– If anyone of these are in the top two positions, you
have disk I/O pressure:• ASYNCH_IO_COMPLETION • IO_COMPLETION • LOGMGR • WRITELOG • PAGEIOLATCH_x
OS Category
p. 67
• Let’s look further at the OS category and others
In the next video…
p. 68
Chapter 9: Monitoring and Performance
68
Course 157: SQL Server 2008 Database Administration
Presented by Scott Whigham
p. 69
Ove
rvie
w • Chapter Introduction
• Tools for Monitoring
• SQL Server Profiler M
on
ito
rin
g • Understanding and Using the DMVs
• PerfMon
• Data Collector
What We’re Going to Cover
p. 70
• The OS category has lots of info– sys.dm_os_sys_info - info such as number
of CPUs, start time of service
– sys.dm_os_tasks - lists each running task
– sys.dm_os_loaded_modules - lists each loaded DLL that SQL Server is using
• Cryptography Manager
• Kerberos Security Package
• Microsoft SQL Server Native Client 10.0
• SQL Server Windows 95 Lite SCM
OS Category
p. 71
• Many OS category DMVs can help diagnose memory pressure– Performance Counters can help too
– We’ll cover Perf Counters in an upcoming section of this chapter
OS Category
p. 72
• The main areas for memory pressure are:– Database page cache (used to cache table/index)
– Query Workspace memory (for Hash and Sort ops)
– Plan cache
– There are others…
OS Category
p. 73
-- Find out what has the most entries
-- in memory
SELECT TOP (20)[Name], COUNT(*) AS 'Count'
FROM sys.dm_os_memory_cache_entries
GROUP BY [Name]
ORDER BY COUNT(*) DESC;
OS Category
p. 74
OS Category
p. 75
-- Top 10 consumers of Buffer Pool
SELECT TOP 10 [type]
, SUM(single_pages_kb) AS memory_in_kb
FROM sys.dm_os_memory_clerks
GROUP BY type
ORDER BY SUM(single_pages_kb) DESC;
OS Category
p. 76
OS Category
p. 77
• One area that many servers have trouble with is the TokenAndPermUserStore cache– An internal security system that generates security
tokens for sessions
– Particularly troublesome area for DBs with lots of ad-hoc SQL
– The problem can be that the TokenAndPermUserStore cache takes up so much memory and is so frequently accessed that when there are a high number of items in the cache, access takes a long time
OS Category
p. 78
1. Queries for diagnosing TokenAndPermUserStore cache issues:
-- What is the size? The larger, the slower!
SELECT SUM(single_pages_kb + multi_pages_kb)
AS ‘CurrentSizeOfTokenCache(kb)’
FROM sys.dm_os_memory_clerks
WHERE name = 'TokenAndPermUserStore'
OS Category
p. 79
2. Queries for diagnosing TokenAndPermUserStore cache issues:
-- How many entries in the
-- TokenAndPermUserStore?
SELECT TOP (20)[Name], COUNT(*) AS 'Count'
FROM sys.dm_os_memory_cache_entries
GROUP BY [Name]
ORDER BY COUNT(*) DESC;
OS Category
p. 80
Scary!
p. 81
• There are multiple ways to prevent TokenAndPermUserStore issues1. Minimize ad-hoc SQL
2. Log in as a sysadmin (no tokens need to be generated)
3. Limit the size of the cache via sp_configureusing• access check bucket count
• access check cache quota
• http://support.microsoft.com/kb/955644
OS Category
p. 82
• There is one way to fix a “live” TokenAndPermUserStore issue– Free the system cache
-- WARNING: Do not use on production without
-- a full understanding!
-- After running, there will not be an entry
-- in sys.dm_os_memory_clerks for TAPUS!
DBCC FREESYSTEMCACHE('TokenAndPermUserStore')
OS Category
p. 92
• Let’s look at blocking and locking…
In the next video…
p. 93
Chapter 9: Monitoring and Performance
93
Course 157: SQL Server 2008 Database Administration
Presented by Scott Whigham
p. 94
Ove
rvie
w • Chapter Introduction
• Tools for Monitoring
• SQL Server Profiler M
on
ito
rin
g • Understanding and Using the DMVs
• PerfMon
• Data Collector
What We’re Going to Cover
p. 95
• To maximize coverage, you want to use both DMVs/DMFs along with Performance Monitor– a.k.a. PerfMon and System Monitor
• PerfMon gathers stats about SQL Server as well as the rest of the environment– Disk subsystems, non-SQL resource usage
Performance Monitor
p. 96
• PerfMon uses objects and counters– Objects are for categorization
– Objects contain one or more counters
• When you install SQL Server, it installs a set of instance-specific objects
Performance Monitor
p. 97
• You can view the SQL Server objects and counters using the DMV sys.dm_os_performance_counters
– Careful - more than 1,100 rows
Performance Monitor
p. 98
• A few things to know about sys.dm_os_performance_counters
– Only displays SQL Server instance’s counters
– Any counter that has “/sec” in the name is cumulative since time SQL Server service was started• Transactions/sec
• Bulk copy rows/sec
– To accurately read these values, compare intervals• Compare 0800 reading to 0900 reading, for
example
Performance Monitor
p. 99
• Example query to return all deprecated features usage– Many feature usages are actually SQL Server
internals and tools!
SELECT *
FROM sys.dm_os_performance_counters pc
WHERE object_name
LIKE '%Deprecated Features%'
AND cntr_value > 0
ORDER BY counter_name
Performance Monitor
p. 100
Performance Monitor
p. 101
• Querying for specific counters allows ad-hoc views of point-in-time information– But no graphs, charts, pretty colors
• For trend analysis, you have a few choices:– Store the query results in a table for later review
– Use PerfMon to store logs for later analysis
Performance Monitor
p. 102
• Some DBAs will store certain values in a table for later querying or for historical perspective– Watch the rest of the chapter prior to attempting
this!
-- Create a new table (”PerfCounters”)
-- and store current counters
SELECT *
INTO PerfCounters
FROM sys.dm_os_performance_counters
Performance Monitor
p. 103
• All DBAs will use PerfMon
Performance Monitor
p. 104
• Let’s take a look at specific objects and counters
In the next video…
p. 105
Chapter 9: Monitoring and Performance
105
Course 157: SQL Server 2008 Database Administration
Presented by Scott Whigham
p. 106
Ove
rvie
w • Chapter Introduction
• Tools for Monitoring
• SQL Server Profiler M
on
ito
rin
g • Understanding and Using the DMVs
• PerfMon
• Data Collector
What We’re Going to Cover
p. 107
• There are a few specific areas you will want to monitor– Sometimes you can find that “Aha!” moment
using ad-hoc monitoring
– Sometimes you can only find that “Aha!” moment using trend analysis
Performance Monitor
p. 108
• A few topics before we go further:– PerfMon, counters with “/sec” in the name are
not cumulative
• Makes it easy to do ad-hoc monitoring
– PerfMon’s GUI defaults to taking measurements every one second
• Too often for trend analysis
• 30-seconds is generally “good enough” for ad-hoc troubleshooting
Performance Monitor
p. 109
• A few areas DBAs want to monitor:– Disk usage
– CPU usage
– Memory usage
• Let’s look at each!
Performance Monitor
p. 110
• A few areas DBAs want to monitor:– Disk usage
– CPU usage
– Memory usage
Performance Monitor
p. 111
• Disk usage monitoring – Disk I/O is commonly a performance stealer
– While SQL Server manages the “when” and “how often” of disk I/O, it is the operating system that performs I/O
– When monitoring disk activity, you need to monitor both SQL Server’s disk activity and the disk activity of the server as a whole
Disk Usage
p. 112
• Disk I/O cannot be isolated as a metric– Example: You are monitoring disk I/O and notice
that you have waits for disk reads/writes. Does this always mean that you need faster/more disks?
• No! Could be that you are paging constantly and memory is the real bottleneck
Disk Usage
p. 113
• Important system objects and counters:
Disk Usage
Object Counter When to worry
PhysicalDisk % Disk Time Consistently > 90%
PhysicalDisk Current Disk Queue Length
Particularly helpful when “% Disk Time” is high; allows to see how many I/O operations are waiting. Start worrying when this value is more than 1.5x the number of spindles
PhysicalDisk Avg. Disk Queue Length In many configs, a disk has 1 spindle. Start worrying when this value is more than 1.5x the number of spindles
Memory Page faults/sec “Some” page faults are normal; look for consistently high numbers
p. 114
• PhysicalDisk: % Disk Time– Tells us how “busy” your array is
– With this counter, you want to worry about sustained activity, not bursts
– A % Disk Time of more than 75% for several continuous minutes occurring several times a day can likely be resolved:
• By adding more disks to the array
• By using faster drives
Disk Usage
p. 115
• PhysicalDisk: % Disk Time (cont.)– When you do notice this is high, start looking at
the PhsyicalDisk: Current Disk Queue Length
• How many disks are in my array?– Tells you how many spindles you have
• How many I/O tasks are waiting?
– If the number of waiting tasks is 1.5 or higher per spindle, you need better I/O performance!
Disk Usage
p. 116
• PhysicalDisk: Avg. Disk Queue Length– Monitor this over time
• Business hours
• 24 hour period
• Peak times
– If you find that it exceeds more than 1.5 waiting tasks per spindle for continuous periods, increase disk performance
Disk Usage
p. 117
• Important SQL Server objects & counters to help diagnose I/O trouble– Object:
• SQL Server: Buffer Manager
– Counters:
• Page reads/sec
• Page writes/sec
Disk Usage
p. 118
• Page reads/sec and Page writes/sec measure physical reads, not logical reads– Not logical reads!
– Object:
• SQL Server: Buffer Manager
– Counters:
• Page reads/sec
• Page writes/sec
Disk Usage
p. 119
• High disk usage is not always a sign that you need more/faster disks– Sometimes poorly optimized queries can
masquerade as disk/memory/CPU issues
– Proper indexing and better queries can help eliminate slow queries as the culprit
One Caveat
p. 120
• PerfMon is great for monitoring disks directly attached to the server– Good but not great for monitoring SANs
– Check with your SAN vendor for suggestions on monitoring disk activity
A Final Caveat
p. 121
• Let’s play with PerfMon and look at Disk, CPU, and memory counters
In the next video…
p. 122
Chapter 9: Monitoring and Performance
122
Course 157: SQL Server 2008 Database Administration
Presented by Scott Whigham
p. 123
Ove
rvie
w • Chapter Introduction
• Tools for Monitoring
• SQL Server Profiler M
on
ito
rin
g • Understanding and Using the DMVs
• PerfMon
• Data Collector
What We’re Going to Cover
p. 124
• While it is fun and educational to learn the various DMVs and DMFs along with the relationships between various system views, it is a huge time sink– Pro tip: download the SQL Server 2008 System
Views map
– http://learnitfirst.com/go.aspx?id=5GR5
Data Collector
p. 125
• How to be an unsuccessful DBA:– Try to remember all the DMVs, DMFs, and
Performance Counters
– Perform all of your performance data collection by running 100+ line queries daily
• Bonus points if you are the only person who knows where on the network these queries/files are located
– Spend 20 hours a week writing and running DMV-based queries
Data Collector
p. 126
• How to be an successful DBA:– Learn the most important DMVs, DMFs and
Performance Counters for your situation
• Every job is different and every database is different
• OLTP databases need different metrics than OLAP
• DBAs of a “single database only” server are often concerned with different things than DBAs of “20 database” servers
– Make your reporting easy to digest and easy to run
• No more 20 hours a week manually writing/running DMV-based queries!
Data Collector
p. 127
• Life as a DBA has traditionally been spent doing a lot of manual collection of performance data1. Create a tables to store performance data
2. Write the queries to collect the data
3. Create a job to store query results in tables
4. Write queries against tables to determine trends, etc
Data Collector
p. 128
• This was how things were done for more than a decade– As recent as SQL Server 2000…
– SQL Server 2005 debuted “Custom Reports” to help us
• Allowed integration of SSMS with Reporting Services to create professional quality reports based on our queries
• “SQL Server 2005 Performance Dashboard” reports
Data Collector
p. 129
• SQL Server 2008 includes the Data Collector to save you time– Creates a Management Data Warehouse (MDW)
that stores critical tuning, planning, and activity history
– Used daily by DBAs to do capacity planning, mitigate risks, free up time otherwise spent trying to write complex DMV/DMF queries!
Data Collector
p. 130
• The Data Collector is turned off by default– Enabling it is not a trivial decision…
– Performance data collection will impact your system
• It’s the Heisenberg uncertainty principle in action!
• How much of an impact depends on what you collect and how often
Data Collector
p. 131
• A disclaimer: – Please test, test, test this prior to deploying in a
production environment
– This is version 1.0 software
– Easy to “over collect”
• 30GB of data collection in three days!
Data Collector
p. 132
• Q& for Data Collector– “What type of information can DC collect?”
• Traces, PerfMon counters, SQL queries
– “Can I use DC to collect SQL 2005/2000 servers?”
• No, SQL Server 2008 only
– “Is this another one of those ‘Enterprise Edition only’ features?”
• No - works great in Standard and Workgroup Editions too!
Data Collector
p. 133
• Q& for Data Collector (cont.)– “How much of an impact will this have on my
server?”
• Microsoft says “5% of CPU and 250-350MB” for the built-in collection sets. Custom collection sets that you create may consume more
Data Collector
p. 134
• Let’s learn a bit more about the Data Collector
In the next video…
p. 135
Chapter 9: Monitoring and Performance
135
Course 157: SQL Server 2008 Database Administration
Presented by Scott Whigham
p. 136
Ove
rvie
w • Chapter Introduction
• Tools for Monitoring
• SQL Server Profiler M
on
ito
rin
g • Understanding and Using the DMVs
• PerfMon
• Data Collector
What We’re Going to Cover
p. 137
• The Data Collector (“DC”) is built into SSMS
Data Collector
p. 138
• You can enable the DC via the Configure Management Data Warehouse Wizard
Data Collector
p. 139
• Configuring the DC is a two-step process:1. Creating the Management Data Warehouse (the
“MDW”)
2. Setting up the actual collection of metrics
Data Collector
p. 140
• Configuring the DC is a two-step process:1. Creating the Management Data Warehouse (the
“MDW”)
2. Setting up the actual collection of metrics
Data Collector
p. 141
• The MDW is a relational data warehouse to store all of your metrics for later analysis
Data Collector
p. 142
• When you create the MDW database, you define the name and physical file location
• Placing the MDW database on either a dedicated server or dedicated disks will minimize performance impact to monitored servers
Data Collector
p. 143
• The MDW data can be shared with non-sysadmins– All sysadmins have access
– Often want network admins to have access to performance data without having access to specific databases
Data Collector
p. 144
• There are three databases roles you can assign:
Data Collector
p. 145
• Once you decide security, you are ready to build the MDW
Data Collector
p. 146
• Configuring the DC is a two-step process:1. Creating the Management Data Warehouse (the
“MDW”)
2. Setting up the actual collection of metrics
In the next video…
p. 147
Chapter 9: Monitoring and Performance
147
Course 157: SQL Server 2008 Database Administration
Presented by Scott Whigham
p. 148
Ove
rvie
w • Chapter Introduction
• Tools for Monitoring
• SQL Server Profiler M
on
ito
rin
g • Understanding and Using the DMVs
• PerfMon
• Data Collector
What We’re Going to Cover
p. 149
• Configuring the DC is a two-step process:1. Creating the Management Data Warehouse (the
“MDW”)
2. Setting up the actual collection of metrics
Data Collector
p. 150
• Back through the wizard…
Data Collector
p. 151
• The Cache directory is local storage on the monitored machine– Remember that this can be run from a central server
Data Collector
p. 152
• Data collector will create SQL Server jobs to perform data collection
• The job has two main components:1. Collect the info
2. Upload the info to the MDW
• Where you collect the info locally is the cache directory– Generally the %temp% folder
Data Collector
p. 153
• Ready, set, go!
Data Collector
p. 154
• What it should look like
Data Collector
p. 155
• Now comes the work…– You can use the System Data Collection Sets
– You can create your own collection sets
• There is no graphical way to create your own collection sets– Must write Transact-SQL
Data Collector
p. 156
• We’ll take a look at enabling the Data Collector and viewing the results
In the next video…