Download SQL Server Performance Monitoring & Optimization

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

DBase wikipedia , lookup

Commitment ordering wikipedia , lookup

Entity–attribute–value model wikipedia , lookup

Tandem Computers wikipedia , lookup

Oracle Database wikipedia , lookup

Database wikipedia , lookup

Ingres (database) wikipedia , lookup

Microsoft Access wikipedia , lookup

Serializability wikipedia , lookup

Team Foundation Server wikipedia , lookup

Extensible Storage Engine wikipedia , lookup

Concurrency control wikipedia , lookup

Btrieve wikipedia , lookup

Microsoft Jet Database Engine wikipedia , lookup

Database model wikipedia , lookup

Clusterpoint wikipedia , lookup

Relational model wikipedia , lookup

Open Database Connectivity wikipedia , lookup

SQL wikipedia , lookup

PL/SQL wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Transcript
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

Establish a
baseline
Repeat
(if desired)
Best Practices:
◦
Identify
bottlenecks
◦
◦
Measure
performance
Make one
change at a time
Optimize for
real-world
workloads
Monitor/review
performance
regularly
Focus on specific
issues
System/OS
• Windows System Monitor
• Alerts (Performance-Based)
SQL Server
• SQL Profiler / SQL Trace
• Activity Monitor / SQL Server Agent Alerts
• Dynamic Management Views (DMVs)
QueryLevel
• Database Engine Tuning Advisor
• Query Execution Plans
Using various SQL Server features to monitor database
activity

Overviews of SQL Server usage

Server-Level Report Examples:
◦ Can export to Excel or PDF
◦
◦
◦
◦
◦
◦
◦
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

Trace Templates (Built-In)
◦ SQL Profiler (GUI)
◦ System Stored Procedures (Transact-SQL)
◦ 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
Event Categories
Event Classes
Events




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)

Numerous analysis options

Output


◦ Indexes (clustered, non-clustered)
◦ Indexed Views
◦ Partitions
◦ 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:
Workload
analysis
Column access
Statement cost
Table access
Event frequency
View-Table
Relations
Index Usage
(current /
recommended)

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:

Deadlock victim

Example:
◦ Two or more tasks permanently block each other based on
resource locks
◦ Default resolution is within 5 seconds
◦ Transaction is rolled-back
◦ Process receives a 1205 error
◦ 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)”