450 likes | 623 Views
SQL Server Performance Monitoring & Optimization. Anil Desai Austin CodeCamp 2008. Speaker Information. Anil Desai Independent consultant (Austin, TX) Author of several SQL Server books Instructor, “Implementing and Managing SQL Server 2005” (Keystone Learning)
E N D
SQL Server Performance Monitoring & Optimization Anil Desai Austin CodeCamp 2008
Speaker Information • 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 Anil@AnilDesai.net
Agenda and Overview • Performance Monitoring Overview • Monitoring SQL Server • Using SQL Profiler • Using the Database Engine Tuning Advisor • Managing Processes, Locking, and Deadlocks
Performance Monitoring Overview Developing processes and approaches for performance optimization
Performance Monitoring Approaches • Best Practices: • Optimize for real-world workloads • Monitor/review performance regularly • Focus on specific issues
Monitoring SQL Server Using various SQL Server features to monitor database activity
SQL Server Management Studio Reports • 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
Database-Level Reports • 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
Monitoring SQL Server Logs • 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
Using Dynamic Management Views (DMVs) • Purpose: • Monitoring and troubleshooting • View server state and performance details • Returns relational result sets • Scopes: • Server level • Database level
DMV Examples • 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
Using SQLDiag • 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
Using SQL Profiler Monitoring SQL Server Activity
Understanding SQL Profiler • 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 Server Profiler Architecture • 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
Configuring Trace Events • Groupings: • Event Categories • Event Classes • Events • Examples: • TSQL • Stored Procedures • Performance • Errors and Warnings • Security auditing
Configuring Trace Columns • 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
Trace Output Options • 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)
Creating Profiler Traces • 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
Other SQL Profiler Options • Creating new templates • Scripting trace definitions • Extracting SQL Server Events • Transact-SQL Events • ShowPlan Events • Deadlock Events
Using System Monitor with SQL Profiler • 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
Windows Performance Monitor • Can monitor local or remote computers • Performance Statistics: • Objects • Counters • Instances • Modes: • System Monitor • Performance Logs and Alerts • Counter Logs • Trace Logs • Alerts
Using the Database Engine Tuning Advisor Analyzing workloads to optimize physical database structures
Database Engine Tuning Advisor • 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
Workload Sources • 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
DTA Options • Limit tuning time • Tuning Options • Allowed Physical Design Structures (PDS) • Keep all/specific existing objects • Maximum storage space • Online or offline recommendations • Partitioning
DTA Reports • Reports can be exported to XML files • Report Examples:
Using the Database Engine Tuning Advisor • 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
Managing Processes, Locking, and Deadlocks Troubleshooting common SQL Server performance problems
Understanding Processes • 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
Monitoring Processes • 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
Managing Processes • 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)
Understanding Locking • 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
Understanding Blocking • Blocking • When transaction(s) must wait for a lock on a resource • LOCK_TIMEOUT setting (default = wait forever) • Locking Models: • Pessimistic • Optimistic
Transaction Isolation Levels • 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
Monitoring Locking Activity • 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
Understanding the Deadlock Process • 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
Avoiding Deadlocks • 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 Victims • 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
Monitoring Deadlocks • 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)
For More Information • Resources from Anil Desai • Web Site (http://AnilDesai.net) • E-Mail: Anil@AnilDesai.net • ReportingServicesGuru.com • Keystone Learning Course: “Microsoft SQL Server 2005: Implementation and Maintenance (Exam 70-431)”