Home
Remote DBA Service
Consulting and Performance
Server Health Checks
Training
Resources
Calendar
What our Customers say
What our Students say
About SQLskills.com
IE2: Immersion Event on Performance Tuning
Overview
This 5-day class is focused on the many areas surrounding performance. While we strongly recommend that the Immersion Event on Internals and Performance should be taken prior to taking this class, this class also stands alone for anyone wanting to focus on some of the most important aspects of performance tuning for SQL Server.
There are many aspects to performance tuning – some should be done when the database is designed, prototyped and tested, while others must be implemented over time. Why can’t you do all of this during design? Data churn varies, user needs change and what the users told you during development often turns out to be untrue; the end result is that workloads change. The key to long term success is being able to understand, recognize and respond to these changes.
In terms of resource troubleshooting, we’ll introduce key concepts that explain how your SQL Server is performing – IO, SQLOS, waits, queues, and inconsistent plans– and explain how to investigate performance issues related to them. We’ll focus on features (many were new for SQL Server 2008) that allow better analysis and/or control to constrained and protect critical workloads and perform very in-depth troubleshooting.
Please see our
Immersion Events Schedule
for class dates and our comprehensive
Immersion Events FAQ
for class costs and other frequently asked questions.
Instructors:
Paul S. Randal, Kimberly L. Tripp, Jonathan Kehayias, Joe Sack
Module List
Module 1: SQL Server IO
Before we talk about how storage works, we need to understand what SQL Server needs. We’ll cover each of SQL Server’s commonly used storage devices (such as data, log, tempdb, and backups) and cover their IO patterns and trends. For each, we’ll then go into detail about how certain kinds of activities change those requirements requirements and how to monitor resource usage using DMVs. Topics covered include:
Designing file/filegroup layout and partitioning
Data: logging, writing, scanning, restoring
Physical layout considerations
Tempdb
Module 2: Waits and Queues
The Waits and Queues performance tuning methodology is the cornerstone of investigating performance issues with SQL Server. SQL Server knows what it is waiting for, so ask it and then figure out what else in the system to investigate. This module will cover the methodology, common wait patterns and what they mean, as well as some deeper investigative techniques. Topics covered include:
Methodology
The RUNNING-SUSPENDED-RUNNABLE-RUNNING cycle
Common wait types
Wait stats DMV usage
Module 3: Critical DMVs - the 20% You'll Use 80% of the Time
SQL Server contains a plethora of DMVs for gaining insight into what's happening (and happened) on the system. In this module we investigate the most useful DMVs and show you their practical application. Topics covered include:
Plan cache analysis
Query fingerprints (query_hash and query_plan_hash)
Index analysis
DMV tools (e.g. sp_WhoIsActive
SQL Server 2012 DMV preview
Summary
Module 4: Query Plan Analysis
Once you’ve identified a query or batch that is associated with a performance issue, you’ll want to look at the query execution plan and see if there are ways that you can address the problem (or problems). Topics covered include:
How to capture query execution plans
How to analyze query execution plans
Common query plan "red flags" and associated next steps leading you to resolution
Module 5: Benchmarking & Baselining
One of the fundamentals of performance tuning is being able to tell how performance has changed from a known point, and also what your system is capable of. This module will show techniques for load testing and creating a baseline. While using Profiler is an expected skill coming into this class, Profiler will still be discussed for some of its more advanced uses including server-side trace queues, automating traces through jobs, Transact-SQL and Performance Monitor counter thresholds as well as collecting the “RIGHT” data for analysis. Topics covered include:
Methodology basics
Benchmark and baseline data collection
Benchmarking storage
Replay Markup Language Utilities
IO tools and utilities
Module 6: Collecting Performance Data
In addition to benchmarking and baselining, it is also important to know how to collect performance data on an ongoing basis. SQL Server 2008 offers different options for collecting this data, which we’ll discuss in this module. Also important is knowing how to use the data you collect it and analyze it. Therefore we’ll also spend some time looking at some of the secondary tools that can be used to analyze collected data. Topics covered include:
Performance Dashboard (even on SQL Server 2008)
Management Data Warehouse
System collection sets
Custom data collection (rolling your own)
Parameterizing trace data with sp_get_query_template
Aggregating trace data within a table
RML, ReadTrace
SQLDiag
SQLNexus
Module 7: Extended Events
Extended events are a powerful way to look deeply into the internals of SQL Server without compromising performance, but there is a bit of a learning curve to extracting and analyzing the information. Topics covered include:
Extended events overview
Analyzing captured events
System health event session
Advanced techniques
Module 8: Practical SQLOS - what you
really
need to know to effectively troubleshoot
SQLOS helps SQL Server perform by managing queries, internal jobs, the buffer pool, and many other shared resources. We'll discuss how SQL Server interacts with Windows and the underlying hardware, and how you may need to tweak it in order to really push the scaling limits. Topics covered include:
Server hardware and NUMA
CPU scheduling
Memory allocation
DMV monitoring and troubleshooting
Edge cases and "benchmark specials"
Module 9: CPU Performance Tuning
This module will cover the various patterns to watch for when troubleshooting CPU-related bottlenecks, including tools that you can use to address these issues (such as Resource Governor). Topics covered include:
First step for a CPU issue – is it SQL or not?
Okay it’s SQL – but is it Kernel or User time?
Possible suspects for Kernel time
Possible suspects for User time
Triage the prime suspects (e.g. how to identify top CPU consuming queries)
Controlling CPU with Resource Governor (overview and application)
Module 10: Memory Performance Tuning
This module will cover the various patterns to watch for when troubleshooting memory-related bottlenecks. Topics covered include:
How to identify Memory issues (including how to distinguish them from other upstream issues)
Identify and troubleshoot Internal Memory pressure
Identify and troubleshoot External Memory pressure
Identify and troubleshoot Low Virtual Memory issues
All about Resource Semaphores
Introduction to memory internals changes in SQL Server 2012
Module 11: IO Concepts for DBAs
Now that we understand what SQL Server needs from our storage, we can explore the different kinds of storage available to us. Topics covered include:
Defining storage terminology (IOPs, latency, etc.)
Magnetic drives and solid state drives
Building arrays with RAID
Mount points
Partition alignment
Testing with SQLIO and IOmeter
Direct attached storage including PCI-Express drives
Module 12: IO - Storage Area Networks for DBAs
Shared storage makes things a lot more complicated, but we’ll demystify the black box. We’ll cover each of the major SAN components, explain how it affects SQL Server performance, and show how to get the right configurations from your SAN administrators. Topics covered include:
SAN components
Shared vs. dedicated arrays
Pathing - Multipathing
Cache (on the drives, SAN controller, RAID controller, and Windows)
Snapshot backups (SAN, not SQL)
Clustering
Module 13: Bringing It All Together
In this module we’ll summarize the various methodologies we’ve presented through the week by working through some real-life customer scenarios we’ve dealt with.
Questions?
If you have any questions about the training classes that SQLskills.com provides, please don't hesitate to
send us email!
Privacy Policy
.
All Rights Reserved.
Copyright 2011 SQLskills.com