2. Anil Desai
◦ Independent consultant (Austin, TX)
◦ Author of numerous IT books
◦ Instructor, “Implementing and Managing SQL Server 2005”
(Keystone Learning)
◦ Info: http://AnilDesai.net or Anil@AnilDesai.net
3. I. Performance Monitoring Overview
II. Monitoring Database Servers
III. Using SQL Profiler
IV. Using the Database Engine Tuning Advisor
V. Application Design Tips
VI. Managing Processes, Locking, and Deadlocks
5. Best Practices:
◦ Optimize for
real-world
workloads
◦ Monitor/review
performance
regularly
◦ Focus on specific
issues
Establish a
baseline
Identify
bottlenecks
Make one
change at a time
Measure
performance
Repeat
(if desired)
7. Server-Level
Issues
• Users are reporting database timeouts
• Intermittent transaction timeouts
• “The server/application seem sluggish”
Application-
Specific
Issues
• “Application A is running more slowly
than usual”
• “The End-of-Month report is taking too
long to run.”
Other Issues
• Ad-hoc reports are running slowly
• CPU, memory, disk, or network alerts
are being generated
9. Available in all current versions of Windows
Statistics are organized into:
◦ Objects
◦ Counters
◦ Instances
Data Collector Sets
◦ Windows Vista / Windows 7 / Windows Server 2008
◦ Used to report on performance data that is collected over
time
◦ Includes built-in System Diagnostics and System Performance
collectors and reports
11. SQL Server Activity Monitor
◦ Provides a quick overview of database server activity
◦ CPU, Processes, Resource Waits and Disk I/O
◦ “Recent Expensive Queries”
SQL Server Management Studio Reports
◦ Quick overview of SQL Server usage
◦ Can export to Excel or PDF
12. Server-Level Reports Database-Level Reports
Server Dashboard
Memory Consumption
Activity – All Block
Transactions
Activity – Top Sessions
Performance – Batch
Execution Statistics
Performance – Top Queries
by Average CPU
Object Execution Statistics
Disk Usage
All Transactions
All Blocking Transactions
Index Usage Statistics
Top Transactions by Age
Schema Changes History
13. 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
14. Purpose:
◦ Monitoring and troubleshooting
◦ View server state and performance details
◦ Returns relational result sets (use standard SELECT statements)
Full list can be viewed in “Views System Views” section
of the properties of the database
Scopes:
◦ Server level
◦ Database level
15. •sys.dm_exec_requests
Query Execution / Processes
•sys.DM_DB_File_Space_Usage
Storage Engine
•sys.DM_DB_Index_Operational_Stats
•sys.DM_DB_Index_Physical_Stats
Indexes
•sys.DM_IO_Pending_IO_Requests
•sys.DM_IO_Virtual_File_Stats
Disk I/O
•Schema information | Common Language Runtime (CLR)
•Database Mirror / Clustering | Replication
Other Categories
16. 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
18. 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)
20. Anil Desai20
Trace
◦ A set of events, data columns and filters that specify what data should be
collected
◦ Data can be saved to a file or a database table
Trace File
◦ Trace data that is saved to a binary file
◦ Default extension is “.trc”
Trace Table
◦ A SQL Server database table in which trace information is stored
◦ Profiler will automatically create the structure of this table when you start
running a new trace
Trace Template
◦ Saved specifications that can be used as the basis for new traces
◦ E.g., an environment may have a “Security Monitoring template”, a “CRM
Application Performance”, etc.
◦ Default extension is “.tdf”
22. Specifies the details to be monitored/recorded
Configuring columns
◦ 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
23. 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)
24. 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
28. Reviews sample workloads and makes performance
recommendations
Evaluates Physical Design Structures (PDS)
◦ Indexes (clustered, non-clustered)
◦ Indexed Views
◦ Partitions
Numerous analysis options
Output
◦ Generates modification scripts
◦ Generates Reports for later analysis
29. 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
30. Limit tuning time
Tuning Options
◦ Allowed Physical Design Structures (PDS)
◦ Keep all/specific existing objects
◦ Maximum storage space
◦ Online or offline recommendations
◦ Partitioning
31. Reports can be exported to XML files
Report Examples:
Workload
analysis
Column access Table access
View-Table
Relations
Statement cost Event frequency
Index Usage
(current /
recommended)
32. 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
34. Create an abstraction layer between the database and
the presentation code
◦ Separates presentation and logic (esp. in Web Apps)
◦ Example: ADO.NET Datasets
Database design:
◦ Understand typical use-cases before designing the database
◦ Create and enforce naming conventions
◦ Balance write (OLTP) and read (reporting) performance
requirements
◦ Use strategic denormalization
Anil Desai34
35. Never include actions that require user input within a
transaction
Use connection pooling, whenever possible
◦ Open connections late and close them early
◦ Avoid unnecessary server round-trips
Use client-side caching whenever possible
◦ Optimistic concurrency
◦ Pessimistic concurrency
Distribute processing
◦ Some operations are more efficient on the DB server (e.g.,
aggregations, sorting, etc.)
37. 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
38. 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
39. 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)
40. 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
41. Blocking
◦ When transaction(s) must wait for a lock on a resource
◦ LOCK_TIMEOUT setting (default = wait forever)
Locking Models:
◦ Pessimistic
◦ Optimistic
43. 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
44. 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
45. 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
46. 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
47. 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)