Kevin Kline Director of Engineering Services, SQL Sentry SQL Server MVP since 2003 Twitter, FB, LI, KEKline Blog:

Slides:



Advertisements
Similar presentations
Module 13: Performance Tuning. Overview Performance tuning methodologies Instance level Database level Application level Overview of tools and techniques.
Advertisements

Advanced Tuning: Unconventional Solutions to Everyday Problems Robert L Davis.
#RefreshCache Database Performance Tuning October 9-11, 2011 Tom Powers IT Applications Team Manager Southeast Christian Church Louisville, KY
Module 17 Tracing Access to SQL Server 2008 R2. Module Overview Capturing Activity using SQL Server Profiler Improving Performance with the Database Engine.
SQL Server Wait Statistics Capture, Report, Analyse Rob Risetto Principal Consultant with StrataDB
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment Chapter 11: Monitoring Server Performance.
Chapter 14 Chapter 14: Server Monitoring and Optimization.
MCITP Guide to Microsoft Windows Server 2008 Server Administration (Exam #70-646) Chapter 14 Server and Network Monitoring.
Chapter 9 Overview  Reasons to monitor SQL Server  Performance Monitoring and Tuning  Tools for Monitoring SQL Server  Common Monitoring and Tuning.
Module 8: Monitoring SQL Server for Performance. Overview Why to Monitor SQL Server Performance Monitoring and Tuning Tools for Monitoring SQL Server.
Kevin Kline, SQL Sentry Director of Engineering Services, Microsoft SQL Server MVP since 2003 Twitter, Facebook, KEKline.
Chapter 17: Watching Your System BAI617. Chapter Topics Working With Event Viewer Performance Monitor Resource Monitor.
Module 18 Monitoring SQL Server 2008 R2. Module Overview Monitoring Activity Capturing and Managing Performance Data Analyzing Collected Performance Data.
Kevin Kline, SQL Sentry Director of Engineering Services, Microsoft SQL Server MVP since 2003 Twitter, Facebook, KEKline.
2 Copyright © 2006, Oracle. All rights reserved. Performance Tuning: Overview.
Key Concepts About Performance Factors Affecting SQL Performance SQL Performance Tuning Methodologies SQL Performance Tuning Tools 1.
1 Robert Wijnbelt Health Check your Database A Performance Tuning Methodology.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment, Enhanced Chapter 11: Monitoring Server Performance.
Informix IDS Administration with the New Server Studio 4.0 By Lester Knutsen My experience with the beta of Server Studio and the new Informix database.
Top Free Tools for Tuning SQL Statements Kevin Kline & Aaron Bertrand SQL Sentry, Inc.
Agenda for Today Do Chapter 14 Final Project Review for Final.
Performance Dash A free tool from Microsoft that provides some quick real time information about the status of your SQL Servers.
Learningcomputer.com SQL Server 2008 – Profiling and Monitoring Tools.
Oracle9i Performance Tuning Chapter 12 Tuning Tools.
© 2008 Quest Software, Inc. ALL RIGHTS RESERVED. Perfmon and Profiler 101.
SQLRX – SQL Server Administration – Tips From the Trenches SQL Server Administration – Tips From the Trenches Troubleshooting Reports of Sudden Slowdowns.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment, Enhanced Chapter 11: Monitoring Server Performance.
SQL Dev Tips for Small Workstations How to develop SQL on small dev workstations when prod is huge. Kevin Kline and Aaron Bertrand SQL Sentry.
Enterprise Database Administration & Deployment SIG ▪ 313M ▪ Sept 29, 2005 ▪ 10:15 AM SQL Server 2005 Performance Diagnosis and Tuning using SQL Tools.
Interpreting DMV’s & practical uses Jannie Muller mullerjannie.wordpress.com.
Troubleshooting SQL Server Performance: Tips &Tools Amit Khandelwal.
MISSION CRITICAL COMPUTING Siebel Database Considerations.
Presented by Vishy Grandhi.  Lesson 1: AX Overview  Lesson 2: Role based security  Lesson 3: Monitoring  Troubleshooting.
1 Chapter Overview Monitoring Access to Shared Folders Creating and Sharing Local and Remote Folders Monitoring Network Users Using Offline Folders and.
Connect with life Praveen Srivatsa Founder and CEO – AstraSoft.NET Vinod Kumar Technology Evangelist – Databases and BI.
Diagnosing Performance with Wait Statistics Robert L Davis Principal Database
Copyright Sammamish Software Services All rights reserved. 1 Prog 140  SQL Server Performance Monitoring and Tuning.
Troubleshoot Customer Performance Problems Like a Microsoft Engineer Tim Chapman Senior Field Engineer, Microsoft.
Scott Fallen Sales Engineer, SQL Sentry Blog: scottfallen.blogspot.com.
Kevin Kline Director of Engineering Services, SQL Sentry SQL Server MVP since 2003 Twitter, FB, LI: KEKline Blog:
Troubleshooting Dennis Shasha and Philippe Bonnet, 2013.
Kevin Kline Technical Evangelist, SQL Sentry SQL Server MVP since 2003 Twitter, FB, LI, KEKline Blog:
SQL Advanced Monitoring Using DMV, Extended Events and Service Broker Javier Villegas – DBA | MCP | MCTS.
Improve query performance with the new SQL Server 2016 query store!! Michelle Gutzait Principal Consultant at
No more waiting. Sponsors About me  Database Technology Specialist  MVP  Blogger  Author 3
This document is provided for informational purposes only and Microsoft makes no warranties, either express or implied, in this document. Information.
SQL Server Internals & Architecture Naomi Williams, SQL DBA LinkedIn
SQL Database Management
AX Performance Tools Present and Future
Dropping acid - Why Does SQL Server Do what it Does?
An introduction to Wait Statistics
Troubleshooting SQL Server high CPU usage
Query Performance Tuning: Start to Finish
End-to-End Troubleshooting CHECKLIST for Microsoft SQL Server
SQL Server Monitoring Overview
Where to Start, What You Need
Microsoft Dumps Question Answer - Dumps4download
Troubleshooting SQL Server Basics
SQL Server on Linux Troubleshooting tips and tricks
Proving Hardware Bottlenecks &
Targeting Wait Statistics with Extended Events
Troubleshooting Techniques(*)
Статистика ожиданий или как найти место "где болит"
Kris Hokanson That’s bad mmmkay! …Or, how to know when your SQL Server isn’t working as well as it could.
Analyzing Performance Problems Using XEvents, DMVs & Query Store
Using wait stats to determine why my server is slow
Inside the Database Engine
Analyzing Performance Problems Using XEvents, DMVs & Query Store
Inside the Database Engine
Inside the Database Engine
Presentation transcript:

Kevin Kline Director of Engineering Services, SQL Sentry SQL Server MVP since 2003 Twitter, FB, LI, KEKline Blog:

Tuning blog: for free copies of our

Methodology for troubleshooting Troubleshooting tools and techniques using the native SQL Server tool kit: o Wait Stats o Windows Performance Monitor (PerfMon) o SQL Profiler, Server-Side Traces, and XEvents o SQL Server DMVs o Execution Plans Summary, Resources, and Q&A

There’s not a “right” or “wrong” place to start. You can start at any of the points shown above. Start with the information source that provides the actionable information most quickly Error Logs PerfMon DMVs Profiler & Trace SSMS (Execution Plan)

Effective troubleshooting is like a funnel or series of continuously more refined sieves. Each successive sieve filters out smaller “chunks”; that is, harder and more transient errors and problems More work is required… Identification & Resolution Specific SQL Cmds Resource issues Errors in the log

Shortcut! Has anything changed? Inside or outside of SQL Server? Is the issue caused by a SQL Server error? Are there excessive wait stats? Correlate wait stats against other metrics. Follow-up

Your best shortcut? Know what has changed! Sp_Configure or sys.configurations Sp_Dboption (pre-SQL2012) or sys.databases (SQL2012 +) DDL triggers for meta-data changes: o Developers? o Unfettered access to databases? Remember: Change = Risk

Windows Application helps eliminate non-SQL Server problems SQL Server Error Log and SQL Server Agent Log o Available both as TXT and through the GUI o SQL Server keeps the six most recent, incrementing with each reboot WARNING! Always make sure to enable SQL Server Agent notifications for severity level 18 or greater!

No further research required o Error found with easy fix o Error found with difficult fix or restore required Further research required o Error found, but time or symptoms of error do not correlate to the problem o No error found

Error Notification

Error notification can be difficult with lots of SQL Servers. Ease the pain by setting up Event Forwarding under the Advanced properties of the SQL Server Agent. All events from remote servers are forwarded to one (or more) central servers. Now, only one instance of SQLMail/DBMail are needed in your environment.

We retrieved the top level information, “the big rocks” Now, what’s the best way to go deeper?

Anytime a task in SQL Server waits for something: o It is reported as a wait type o Reveals where the bottlenecks are SQL Server 2005 aggregates wait type information SQL Server 2008 provides new pre-emptive wait stats

1 Window = 1 Scheduler Users are assigned to a thread Uh oh! The out of soda! No problem. Step aside… More syrup for the sodas! Goes to the waiting or “suspended” queue Yeah! I’m next in line!

sys.dm_os_waiting_tasks Wait information Task level Very accurate Transient data

PAGELATCH_xx and LATCH_xx PAGEIOLATCH_xx usually come from contention on the buffer pool LATCH_xx commonly arise from contention on resources other than buffer pool, especially due to heaps or text data types LCK_xx arise from lots of locks and blocks, perhaps by overlong transactions or improperly indexed tables or poorly configured hardware

SOS_SCHEDULER_YIELD Yielding processor time CXPACKET Query parallelism due to splitting and merging overhead

WRITELOG Writing transactions to the log on disk PAGEIOLATCH_xx Represent memory-to-disk transfers IO_COMPLETION Awaiting I/O task completion

OLEDB Wait on the OLEDB provider o Full-Text Search o Lots of linked servers NETWORKIO Often poor client response, in addition to physical networking

SLEEP_BPOOL_FLUSH Checkpoint IO throttling RESOURCE_SEMAPHORE_QUERY_CO MPILE Throttling query compilations Compilations, re-compilations, non- cacheable plans RESOURCE_SEMAPHORE Waiting for a memory grant

WAITFOR T-SQL WAITFOR command SQLTRACE_BUFFER_FLUSH Default trace LAZYWRITER_SLEEP System process waiting to start

CPU PRESSURE CPU pressure: SOS_SCHEDULER_YIELD Parallelism: CXPACKET LOCKING Long term blocking: LCK_X, LCK_M_U, & LCK_M_X MEMORY Buffer latch: PAGELATCH_X Non-buffer latch: LATCH_X Memory grants: RESOURCE_SEMAPHORE I/O Buffer I/O latch: PAGEIOLATCH_X Tran log disk subsystem: WRITELOG & LOGBUFFER General I/O issues: ASYNC_IO_COMPLETION & IO_COMPLETION NETWORK PRESSURE Network I/O: ASYNC_NETWORK_IO

With wait stats, other older standbys are not as frequently needed. o But they still help! PerfMon Xevents and Traces (either Profiler or Server-side) DMVs

Benefits: Shows the rate of resource consumption or activity in a wide variety of areas on the server, for example o Disk IO; Memory; Network o SQL Server activity - Locking, Blocking, and Deadlocking; Cache Activity; Object Utilization Limitations o Very hard to know what to track and what values indicate good or bad performance o Doesn’t offer good root-cause analysis, only resource consumption info

ObjectCounterValueNotesPaging$Usage<70% Amount of page file currently in use Processor % Processor Time <= 80% The higher it is, the more likely users are delayed. Processor % Privilege Time <30% of % Processor Time Amount of time spent executing kernel commands like SQL Server IO requests. Process(sqlservr) Process (msmdsrv) % Processor Time < 80% Percentage of elapsed time spent on SQL Server and Analysis Server process threads. System Processor Queue Length < 4 < 12 per CPU is good/fair, < 8 is better, < 4 is best

ObjectCounterValueNotes Physical Disk Avg Disk Reads/sec < 8 > 20 is poor, 20 is poor, <20 is good/fair, <12 is better, <8 is best Physical Disk Avg Disk Writes/sec < 8 or <1 Without cache: > 20 poor, 20 poor, <20 fair, <12 better, <8 best. With cache > 4 poor, 4 poor, <4 fair, <2 better, <1 best Memory Available Mbytes >100 Amount of physical memory available to run processes on the machine SQL Server: Memory Manager Memory Grants Pending ~0 Current number of processes waiting for a workspace memory grant. SQL Server: Buffer Manager Free List Stalls/sec < 2 Frequency that requests for db buffer pages are suspended because there are no buffers.

ObjectCounterValueNotes :Access Methods Forwarded Records/sec <10* Tables with records traversed by a pointer. Should be < 10 per 100 batch requests/sec. :Access Methods Page Splits/sec <20* Number of 8k pages that filled and split into two new pages. Should be <20 per 100 batch requests/sec. :Databases Log Growths/sec; Percent Log used < 1 and <80%, resp Don’t let transaction log growth happen randomly! :SQL Statistics Batch Requests/sec * No firm number without benchmarking, but > 1000 is a very busy system. :SQL Statistics Compilations/sec;Reco mpilations/sec * Compilations should be <10% of batch requests/sec; Recompilations should be <10% of compilations/sec :LocksDeadlocks/sec < 1 Nbr of lock requests that caused a deadlock.

Monitors SQL Server for the occurrence of events When an event fires, Profiler logs the event and information about it Useful for: o Finding and diagnosing slow-running code. o Capturing the series of SQL statements that lead to a problem o Replaying and reproducing a problem on a test machine Doesn’t offer resource consumption info, just granular details

Warning! Profiler can be overwhelmed by a high throughput system! Server-side traces happen entirely on the server (no client GUI) and are controlled using stored procedures Useful for “auto-start” logging and high performance scenarios TIP! Profiler can be used to create a server-side trace. That means no procedures to learn.

Correlating PerfMon and Profiler Information

1: Invoke SQL Profiler 2: Choose a template, Standard is usually ok. 3: Choose your Events from the Events Selection tab. 4: Click RUN to begin the trace. 5: Click STOP to end the trace and write it to a file.

1.After collecting a PerfMon and Profiler trace file, load the Profiler file using File  Open  Trace File. 2.Choose File  Import Performance Data to load in the PerfMon trace file. 3.Choose the PerfMon counters to show on your analysis screen. 4.You’ll then have the overlay of PerfMon & Profiler data as shown on the right. 5.You can click anywhere on the timeline to see what was happening at that point in time.

Tell exactly what’s happening at present inside of SQL Server Multitude of DMVs, which can tell things like: o What are the top 10 most CPU-intensive queries? o What are the 5 biggest objects in cache? o Which objects get the most IO? o Which users consume the most resources? DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR);

Performance & Wait Stats Sys.dm_os_wait_stats Sys.dm_os_performance_counters Sys.dm_os_waiting_tasks I/O Sys.dm_io_virtual_file_stats Sys.dm_io_pending_io_requests Transactions Sys.dm_tran_lock Sys.dm_db_index_operational_stats Sys.dm_db_index_usage_stats SPID Activity & SQL Statements Sys.dm_os_exec_requests Sys.dm_exec_requests Sys.dm_exec_query_stats Sys.dm_exec{procedure | trigger}_stats Why code it yourself? Get Glenn Berry’s latest scripts at

1. Inside or Outside of MSSQL? Check Windows Server logs. Resolve any errors and recheck. 2. Caused by an MSSQL or SQLAgent error? Check SQL Server and SQL Agent logs. Resolve any errors and recheck. 3. Excessive wait stats? Assess wait statistics to categorize the bottleneck using sys.dm_wait_stats. 4. Wait stats correlate to specific sessions or components? Assess session wait stats using sys.dm_waiting_tasks. Resolve problematic user activity or process. Assess other problem areas using other DMVs, like dm.os_performance_counters. Resolve system misconfiguration, design problem, or resource shortage.

Once the root-problem is revealed, you still have to fix it. Common resolutions using SSMS include: o Debug a SQL Server procedure or function o Tune one or more SQL statements o Add or alter indexes Tuning SQL code can be difficult unless you know how to read an execution plan: o SQL Sentry Plan Explorer is FREE!

Explain plans tell you all the internal steps that the SQL Server takes to complete the action Read graphic explain plans from right to left. (Textual ones from bottom to top) Graphic plans use icons to represent actions, while arrows represent data flows

Reading Basic Execution Plans

Fixing bad code is an exercise in experimentation o Lots of tips & tricks to try o Check out our tuning content at Figure out the work done in the code, then try a new version that might improve it: o Different search arguments in the WHERE or JOIN clauses to make better use of indexes o Use an alternative pattern o Apply a different locking strategy o Use a query hint Clear you caches, then rewrite, test, repeat…

When using the native tools in SQL Server to detect, diagnose, and resolve problems, you must use: The SQL Server Error Log The SQL Server Error Log Wait Stats Wait Stats PerfMon PerfMon SQL Profiler and/or server-side traces SQL Profiler and/or server-side traces DMVs (sometimes, the Perf Dashboard) DMVs (sometimes, the Perf Dashboard) Asses execution plans Asses execution plans

Adam Machanic’s sp_whoisactive Brent Ozar’s sp_askBrent, sp_blitz Extended events – Jonathan Kehayias DMVs – Glenn Berry’s diagnostic queries System info: dm_os_performance_counters, dm_os_wait_stats Query info: dm_exec_requests, dm_exec_query_stats Plans: dm_exec_query_plan, dm_exec_plan_attributes Cache/buffer pool: dm_exec_cached_plans, dm_os_buffer_descriptors Index info: dm_db_index_usage_stats, dm_io_virtual_file_stats

Slides will be available at o Password is $entry for free copies of our o Just tell them where you met me