How to Make Slow SQL Servers Go Faster
Welcome Microsoft Ignite attendees! You’re probably here for Watch Brent Tune Servers in section 1, my Steal This Slide Deck covering Ignite’s SQL 2016 sessions, and the rest of the links in here also cover other resources I used. Hope you enjoyed the session, and hope to see you again at Ignite on May 9-13 in Chicago. (Man, you got lucky with the weather this year.)
You’re a developer, DBA, or sysadmin stuck with a Microsoft SQL Server that isn’t going fast enough. We’ll show you how to make it fly with these steps:
- Measure how fast the server is going now.
- Performance tune the queries.
- Performance tune the indexes.
- Performance tune SQL Server’s settings.
- Performance tune the hardware.
- Finally, if you have to buy new servers, get a best practices setup checklist, and load test before going live.
Let’s get into the details of each step.
1. Measuring SQL Server’s Speed and Bottlenecks
Here’s our favorite techniques:
- sp_AskBrent® – this free tool is like SQL Server’s speedometer. It shows you how fast SQL Server is going, and which wait types are preventing you from going faster.
- SQL Server Perfmon Tutorial – how to set up Perfmon, what SQL Server Perfmon counters to track, and what the indicators mean.
- Watch Brent Tune Servers – at Microsoft Ignite 2015, he took several SQL Server workloads, found the bottleneck, and then tweaked various settings for quick fixes.
Then, before you start changing things, ask what parts of the server you’re allowed to change. The Manager’s Guide to Tuning SQL Server gives you a simple checklist of what parts you can tweak, change, or replace completely.
2. Performance Tune the T-SQL Queries
If you’ve got an in-house app, and you’re allowed to tweak the queries, here’s a few ways to find the culprits:
- The free sp_BlitzCache® shows you most resource-intensive queries in the plan cache
- sp_WhoIsActive replaces sp_who and shows you the queries running right now
- Extended Events is harder, but it helps you catch individual queries in action
Once you’ve found the queries you need to tune, here’s our favorite resources:
- Watch Brent Tune Queries – ever wonder how somebody else does it? Peer over Brent’s shoulder in this session recording.
- 7 Things Developers Should Know About SQL – including why functions rarely perform well, why WITH NOLOCK doesn’t mean there’s no locking, and more.
- How to measure performance improvements – Kendra explains how to use statistics from SSMS.
- How to read query execution plans and tune them to make them go faster.
3. Performance Tune the Indexes
If you want to make the database structures more efficient so SQL Server works less, here’s our resources:
- sp_BlitzIndex® – run this in your database for a free sanity check. It shows missing indexes, unused indexes, duplicates, heaps, and more, and explains why they’re killing your performance.
- Indexing resources – our favorite blog posts and videos about tuning indexes.
- SQL Server Book Recommendations – okay, the books aren’t free, but our recommendations are. We pick the best beginner, advanced, and performance tuning books.
- Table partitioning – this feature seems like a great way to split up big tables, but it comes with some big gotchas.
- How to tune indexes – and make SQL Server queries go faster.
4. Performance Tune SQL Server’s Settings
Surprisingly, a lot of SQL Server’s default settings can lead to bad performance. Let’s talk through what you need to do:
- Run sp_Blitz® on the server. It’s a free health check that catches many common performance bottlenecks.
- Check our SQL Server Setup Checklist – some simple configuration tweaks can get you 20-30% performance increases right from the start without spending any extra money.
- Review the Poor Performance Checklist – Jeremiah’s 5 things that fix bad SQL Server performance.
- Sysadmin’s Guide to SQL Server Memory – why isn’t sqlserver.exe using much memory? How can you tell if it needs more?
5. Performance Tune the Hardware
Hey, sometimes, throwing hardware at it is the fastest, easiest, and cheapest fix.
- What’s the Smallest SQL Server You Should Build? – Brent explains why 96GB RAM really isn’t all that much – especially when you compare it to SQL Server licensing costs.
- SSD RAID Load Testing Results – Exactly how fast are off-the-shelf consumer SSDs, especially when you put them behind a RAID controller?
- Shared Storage for SQL Server – we do a lot of SAN tuning, and we’ve gathered our favorite resources.
- Virtualization Best Practices – licensing, recoverability, and performance configurations.
- Virtualization, SANs, and Hardware for SQL Server – a 7-hour online class teaching how to set things up and tune them.
6. Building and Load Testing New SQL Servers
When you’re planning how big of a server to build, start with Brent’s video from Microsoft TechEd 2012, Building the Fastest SQL Servers. He explains the two common access patterns for databases (OLTP and data warehousing) and gives you resources on what hardware to pick for each.
For data warehouses, go to the Microsoft Fast Track Landing Page, but BEFORE YOU CLICK, this page has a lot of marketing stuff, and you need to know what you’re looking for. Focus on the Reference Configurations and Configuration Guides. There are some vendor-neutral ones from Microsoft, and then there’s vendor-specific guides from Dell, HP, IBM, etc. You may have to scroll all the way to the bottom to see the vendor-specific stuff.
Once the server is built, here’s our favorite resources for load testing and setup:
- How Fast is Your Storage? – I show you how to use the free CrystalDiskMark tool to do a fast load test on solid state drives and SANs.
- How to Test SAN Performance with SQLIO – SQLIO is probably the worst-named tool in history: it has nothing to do with databases. It’s still really useful to test bottlenecks though.
We can help. We’re like the SQL Server emergency room.
We specialize in making Microsoft SQL Server fast and reliable.
Our clients are diverse: dot-com sites, hedge funds, hospitals, software vendors, and all the way down to small 1-2 person shops. They all have one thing in common: they’re frustrated with their SQL Servers, and they need fast, cost-effective answers.