Aaron states that the Community Influencer of the Year award goes to, “someone who has made a dramatic impact on the SQL Server community.” This type of recognition is wonderful to hear and I am honored to have such kind words come from someone like Aaron.
I’m especially flattered since the previous award recipients are Andy Mallon (2016) and Drew Furgiuele (2017). Being recognized in the same league as those two feels amazing. Andy and Drew are incredible and inspiring, both in the data platform community and outside of it.
2018 was a great year and I’m looking forward to 2019. The number of people I’ve befriended this year and have helped me along the way is staggering; thank you to each and every one of you.
And finally, thank you all for following me along on this journey. I truly appreciate the interactions I have with you in-person, on Twitter, in the comments, and everywhere else.
Since I had never taken an online class before, I thought it’d be fun to write a mini-review of what I thought about the class as well as what lesson from the course had the biggest impact on me.
As excited as I was to take the class, I was a little concerned about a couple of aspects about it. My main concerns before taking the online class were:
Would I have difficulty focusing in an online class? YouTube, Facebook, and other distractions are only a few clicks away.
Will it feel like a 1-way dialogue since I wouldn’t be there in person to ask questions, participate in discussion, and interact with other student?
My first concern was immediately invalidated when we started working on our labs. During the 3 days, Brent does the traditional training of explaining problems, techniques, and solutions (in his own humorous way of course) BUT THEN instead of moving on to the next topic he gives the students time to work through problems on their own in labs he set up.
This was huge. Every student gets an 8 core, 64TB Azure VM running simulated workloads that provide a great real-world representation of an under performing SQL Server.
Instead of taking notes for 3 days and hoping that I would remember to try them out when I returned to work, the labs allowed me to apply those new concepts immediately. I think working through these problems in a real-world scenario is not only practical, but probably the best way of retaining the information you learn. I’m not sure how much work it was for Brent to set up these labs (guess: a ton), but they really payoff as a student.
As for my concern about the course not being interactive, that turned out to not be a problem either. During the duration of the class (as well as for a couple hours before and after the class each day) there was a Slack chatroom where Brent and the students could interact.
The Slack chat had two huge advantages:
Questions were typed out and written down, making it easy to know who asked what and what question Brent was responding to. It also made it easy to copy and paste the chat for my notes. It was also nice to have the ability to type a question overnight and get an answer the next morning.
We were asked to post all of our lab queries into the chat when we think we had found a solution to the performance problems. This was AWESOME because not only did I get 1-on-1 code review and advice from Brent, I got to see what everyone else was submitting as an answer.
Each lab scenario could usually be solved a few different ways, so this meant other students were submitting completely different solutions than what I came up with. Seeing other people’s approach to problem solving was really cool. Even better, I could try out their solutions in my own lab by copying and pasting the queries from Slack into my lab VM, seeing how those different solutions compared to my own.
So while I had some concerns before the class started, it turns out they weren’t problems at all and the class was great.
My Favorite Lesson: Prioritizing Performance Solutions
The Master Index Tuning training covered everything needed to practically troubleshoot and solve index performance issues. While Brent taught many techniques, from everyday solutions to advanced once-in-a-while techniques for certain edge cases, my biggest takeaway was how Brent taught us to prioritize the low-hanging-index-tuning-fruit first.
I’m a query tuner by nature. Before taking this training, my go-to solution for fixing a performance problem was to start refactoring a query or correcting the indexes for that one particular query.
Instead, Brent recommended that we focus on the actions with the largest performance returns first: at a database or instance level, clean up duplicate (or near duplicate) indexes, drop unused indexes, add missing indexes, etc…
Many individual query performance issues can be fixed by changing indexes alone, without ever needing to touch the queries themselves. Fixing poorly created indexes on your server has the additional advantage that it can improve performance of MULTIPLE queries running on your server simultaneously.
The takeaway here is that unless your server is already in tip-top shape, you’ll probably get more bang for your buck fixing duplicate, inadequate, and missing index issues than you will by tuning individual queries. This may sound obvious, but from my “every problem is a query tuning problem” standpoint this was a nice reminder that sometimes looking at the bigger picture will produce larger returns than focusing only on the details.
Final Verdict: Is It Worth It?
Yes. Especially if you are the kind of person who learns best by doing and wants real-world index tuning advice. By the end of the class I felt confident enough to immediately go back to work and start applying what I had learned from Brent and practiced in the labs.
I keep a memorized list of open-ended questions that I can ask whenever I don’t know how to keep the conversation going. Try asking any of these questions the next time you don’t know what to say (and reciprocate by sharing your own fun story); I guarantee these will spark some interesting conversations.
1. “What’s your best SQL Server war story?”
We’ve all been in the trenches and have had to play the hero.
2. “What are your thoughts on EntityFramework/ORMs?”
If you ever want to get a table full of SQL DBAs going, this will do it.
3. “What’s the oldest version of SQL Server you are still stuck supporting?”
Although this one elicits a one-word response, the next easy follow-up is “why/how!?”
4. “What was your biggest “oops” moment?”
Backups were corrupt? Yeahhhhh….
5. “What’s the most recent feature you started using in SQL Server 2014/2016/2017? How is it?”
I love hearing people’s answers to this because it’s a good way to figure out what new features really add value and which ones are over-hyped/limited in functionality.
6. “Are you using <feature you are interested in learning>? How is it?”
Similar to #5, this is a great way to get real-world feedback about certain features.
7. “What’s your favorite session from today/this week? What did you like most about it?”
I love finding out what sessions other people found useful – once again, real world reviews on what I should check out in the future.
8. “Have you been to <city> before? Do you have any recommendations for what I should do/see/eat?”
Great way to get to know the surrounding area without having to read reviews online.
9. “Do you use PowerShell or any other software to automate/do dev ops?”
PowerShell is the future. Start learning how others are incorporating it into their environments, what struggles they’ve had implementing automated processes, etc…
10. “Are there any other events going on tonight?”
Especially great if talking to people who have attended the event before. Find out what’s worth going to, if it’s better to show up early or late, is there a “best seat” in the house, etc…
I hope this list of questions encourages you to become better acquainted with your fellow conference goers. And if I see you at PASS Summit…don’t be surprised if you hear me ask you one of these questions!