Anil Desai
Austin CodeCamp 2008
Anil Desai
Independent consultant (Austin, TX)
Author of several SQL Server books
Instructor, Implementing and Managing SQL
Server 2005 (Keystone Learning)
Info: http://AnilDesai.net or [email protected]
I.
Performance Monitoring Overview
II.
Monitoring SQL Server
III.
Using SQL Profiler
IV.
Using the Database Engine Tuning Advisor
V.
Managing Processes, Locking, and
Deadlocks
Developing processes and approaches for
performance optimization
Best Practices:
Optimize for
real-world
workloads
Monitor/review
performance
regularly
Focus on
specific issues
Using various SQL Server features to
monitor database activity
Overviews of SQL Server usage
Can export to Excel or PDF
Server-Level Report Examples:
Server Dashboard
Memory Consumption
Activity All Block Transactions
Activity Top Sessions
Performance Batch Execution Statistics
Performance Top Queries by Average CPU
Object Execution Statistics
Examples:
Disk Usage
All Transactions
All Blocking Transactions
Index Usage Statistics
Top Transactions by Age
Schema Changes History
New reports added in Service Packs
Ability to use custom reports
Windows Event Logs / Event Viewer
Application and System Event Logs
SQL Server Management Studio
SQL Server Logs
Can configure max. # of log files
SQL Server Agent Error logs
Can configure logging levels (Errors, Warnings,
Information)
Using the Log File Viewer
Can Export / Load log information
Can search for specific errors/messages
Purpose:
Monitoring and troubleshooting
View server state and performance details
Returns relational result sets
Scopes:
Server level
Database level
Examples:
Database Engine
Sys.DM_DB_File_Space_Usage
Indexes
Sys.DM_DB_Index_Operational_Stats
Sys.DM_DB_Index_Physical_Stats
I/O Related
Sys.DM_IO_Pending_IO_Requests
Sys.DM_IO_Virtual_File_Stats
Common Language Runtime
Database Mirroring
Transactions
Data Collected:
System Information (MSINFO)
Windows Event Logs
SQL Server configuration
Command-Line Utility (SQLDiag.exe)
Stores output to files
Configuration file: SQLDiag.xml
Can run as a service (/R)
Can run in continuous mode
Monitoring SQL Server Activity
Purpose / Features:
GUI for managing SQL Trace
Monitor important events
Capture performance data / resource usage
Replaying of workloads / transactions
Identifying performance bottlenecks
Correlation of data with System Monitor
Workloads for Database Tuning Advisor
Examples:
Generate a list of the 100 slowest queries
Monitor all failed logins (Security)
SQL Profiler Terminology
Trace Definitions
Events
Columns
Filters
Creating and Managing SQL Traces
SQL Profiler (GUI)
System Stored Procedures (Transact-SQL)
Trace Templates (Built-In)
Standard (Default), SP_Counts
TSQL, TSQL_Duration, TSQL_Grouped,TSQL_Replay,
TSQL_SPs
Tuning
Groupings:
Event Categories
Event Classes
Events
Examples:
TSQL
Stored Procedures
Performance
Errors and Warnings
Security auditing
Specify the details to be recorded
Columns can be ordered and grouped
Values can be filtered
Examples of Columns:
StartTime / EndTime
TextData
Duration
Resource Usage (CPU, Reads, Writes)
Information: User, Database, App. Names
Interactive
Good for live monitoring of small sets of data
Trace Files (*.trc)
Can enable file rollover based on size
Server processes trace data option
Trace table
Will automatically create the table
Can set maximum number of rows
Scheduling of traces (stop time)
Launching SQL Profiler
Connecting to a database instance
Configuring output options
Create a trace definition
Specifying events, columns, and filters
Running and viewing a trace
Creating new templates
Scripting trace definitions
Extracting SQL Server Events
Transact-SQL Events
ShowPlan Events
Deadlock Events
Purpose / Goal:
Correlate server performance with database
performance
Process:
Define and start a counter log
Define and start a SQL Profiler trace
Import Performance Data in SQL Profiler
Required Trace properties
StartTime
EndTime
Can monitor local or remote computers
Performance Statistics:
Objects
Counters
Instances
Modes:
System Monitor
Performance Logs and Alerts
Counter Logs
Trace Logs
Alerts
Analyzing workloads to optimize physical
database structures
Can make performance-related
recommendations
Replaces the Index Tuning Wizard
Evaluates Physical Design Structures (PDS)
Indexes (clustered, non-clustered)
Indexed Views
Partitions
Numerous analysis options
Output
Generates modification scripts
Generates Reports for later analysis
Files
Transact-SQL Files
XML Files
Should represent commonly-used queries
SQL Profiler Trace Files / Tables
Use Tuning built-in trace template
Events:
Transact-SQL Batch
Remote Procedure Call (RPC)
Columns: Event Class and Text Data
Limit tuning time
Tuning Options
Allowed Physical Design Structures (PDS)
Keep all/specific existing objects
Maximum storage space
Online or offline recommendations
Partitioning
Reports can be exported to XML files
Report Examples:
Process:
Generate a workload (file or table)
Select tuning options
Run the analysis
View reports
Save and/or apply recommendations
Running the DTA:
Database Engine Tuning Advisor Application
(GUI)
Dta.exe command-line utility
Troubleshooting common SQL Server
performance problems
Processes
Interactive users
SQL Server Management Studio
Applications (Connection Pooling)
SQL Profiler
Database Engine Tuning Advisor
Replication
Service Broker
Process IDs < 50 are system-related
SQL Server Activity Monitor
Processes (connected users)
Locks (by Process / by Object)
Filtering options
Auto-refresh option
System Stored Procedures / Views
Sys.DM_Exec_Sessions
Sys.DM_Exec_Requests
Sys.SysProcesses
sp_who / sp_who2
Process Information
Current Process ID: @@SPID
Session Options: DBCC USEROPTIONS
Killing Processes
KILL ProcessID [WITH STATUSONLY]
Viewing Last Activity
DBCC INPUTBUFFER(ProcessID)
DBCC OUTPUTBUFFER(ProcessID)
Coordinates multiple accesses to the same
data
Ensures ACID Properties for transactions
(Atomic, Consistent, Independent, Durable)
Contention can reduce performance
Locking granularity:
Row-Level, Page-Level, Table-Level, etc.
Lock Modes:
Shared, Exclusive, etc.
Lock escalation
Blocking
When transaction(s) must wait for a lock on a
resource
LOCK_TIMEOUT setting (default = wait forever)
Locking Models:
Pessimistic
Optimistic
Balance of concurrency (performance) vs.
consistency
Affects SELECT queries
SET TRANSACTION ISOLATION LEVEL
Transaction Isolation Levels
READ UNCOMMITTED
READ COMMITTED (default)
REPEATABLE READ
SERIALIZABLE
Row-Versioning:
ALLOW_SNAPSHOT_ISOLATION
READ_COMMITTED_SNAPSHOT
Activity Monitor
SQL Profiler
Locks Event Category
System Monitor:
SQL Server Locks Object
System Views
Sys.DM_Tran_Locks
Sys.DM_Exec_Requests
System Stored Procedures
sp_Lock
Deadlocks:
Two or more tasks permanently block each
other based on resource locks
Default resolution is within 5 seconds
Deadlock victim
Transaction is rolled-back
Process receives a 1205 error
Example:
Process 1 locks the Customers table and
requires access to the Orders Table
Process 2 locks the Orders table and requires
access to the Customers Table
Minimize transaction times
Commit / Rollback transactions as quickly as
possibly
Avoid user-related time within a transaction
Access objects in a consistent order
Change the transaction isolation level
Use a lower level isolation level, if appropriate
Use snapshot-based isolation levels
Deadlock priorities:
SET DEADLOCK_PRIORITY (LOW, NORMAL, HIGH,
integer)
Deadlock resolution:
Lower priority is killed first
If equal priorities, least expensive transaction
becomes the victim
Application or user should attempt to re-run the
transaction
SQL Server Error Log
SQL Profiler
Locks Event Category
Lock:Deadlock Chain
Lock:Deadlock
Deadlock Graph
Events Extraction Trace Property
Export deadlock XML (.xdl) file
Viewing Deadlock Files
SQL Server Management Studio (File Open
SQL Deadlock Files (*.xdl)
Resources from Anil Desai
Web Site (http://AnilDesai.net)
E-Mail:
[email protected] ReportingServicesGuru.com
Keystone Learning Course: Microsoft
SQL Server 2005: Implementation
and Maintenance (Exam 70-431)