IE2: Immersion Event on Performance Tuning
Overview
This 5-day SQL Server training class is focused on the many areas surrounding performance. While we strongly recommend that the IE1: 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 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 focus on features (many were new for SQL Server 2008 and 2012) that allow better analysis and/or control to constrained and protect critical workloads and perform very in-depth troubleshooting.
Instructors: Paul S. Randal, Kimberly L. Tripp, Jonathan Kehayias, Joe Sack
Please see our Immersion Events Schedule for class dates and our comprehensive Immersion Events FAQ for class costs and other frequently asked questions.
Curriculum
Module 1: SQL Server I/O
Before we talk about how storage works, you need to understand what SQL Server needs. We cover each of SQL Server’s commonly used storage devices (such as data, log, tempdb, and backups) and cover their I/O patterns and trends. For each, we 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: I/O Concepts for DBAs
Now that you understand what SQL Server needs from your storage, we can explore the different kinds of storage available to you. 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 3: I/O – Storage Area Networks for DBAs
Shared storage makes things a lot more complicated, but we demystify the black box. We 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 4: 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 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 5: 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 6: 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. This module introduces Extended Events and shows the T-SQL used to control them. The 2012 UI and 2012-specific topics are discussed in a later module. Topics covered include:
- Extended events overview
- Analyzing captured events
- System health event session
Module 7: 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:
- Why look at query plans?
- How to capture query plans
- How to analyze query plans
- Understanding common operators
- Know which plan patterns to watch for and investigate further
Module 8: 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:
- Defining CPU performance issues
- SQL Server vs. external CPU issues
- Kernel vs. User time
- Where to find the SQL Server CPU consumers
- What to look for and how to remediate
- Controlling CPU with Resource Governor
Module 9: Plan Cache and Index Analysis
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:
- Part I: Understanding/analyzing plan cache
- Part II: What’s in the plan cache?
- Part III: Understanding/optimizing stored procedures
- Part IV: A cautionary tale about scalar functions
- Part V: Index analysis
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 12: Data Collection and 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:
- Benchmark vs. baseline
- Data collection methods and tools
- Native tools:
- Collector Sets and Counter Logs
- PAL Tool (Performance Analysis of Logs)
- SQL Trace
- Introduction Distributed Replay Utility (DRU)
Module 11: Deadlock Analysis
While troubleshooting deadlocking in SQL Server has gotten easier in recent versions, it continues to be a constant source of problems. This module will look at the most common deadlocks and how to troubleshoot them using the various methods available to DBAs. Topics covered include:
- Review of locking in SQL Server
- What is a deadlock (reminder)
- Collecting deadlock graphs
- Anatomy of a deadlock
- Reading deadlock graphs
- Resolving deadlocks
Module 12: 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 and 2012 offer different options for collecting this data, which we discuss in this module. Also important is knowing how to use the data you collect it and analyze it. Therefore we also spend some time looking at some of the secondary tools that can be used to analyze collected data. Topics covered include:
- The Default Trace
- Reading trace data using T-SQL
- ReadTrace
- SQLDiag
- SQLNexus
- Deadlock Analysis
- 2012 Extended Events
Module 13: Performance Issue Patterns
This module draws together all the methodologies presented so far to debug a variety of performance problems live and interactively with the class.
Module 14: Advanced Extended Events
This module presents the 2012 Extended Events UI and how to use it, plus some very advanced troubleshooting scenarios that can only be performed using Extended Events. Topics covered include:
- SQL Server 2012 Extended Events UI
- Extended Events advanced troubleshooting
Questions?
If you have any questions, please contact us.