Hello! Thanks for visiting my blog entry for the SQL Skills Competition to win a free seat at one of their performance tuning immersion events in October 2017. Over the past few years, I have benefited greatly from the resources provided by the SQL Skills team. It would be a great pleasure and highly educational experience to attend their Immersion Event on Performance Tuning and Optimization – Part 1 (IEPTO1).
In accordance, of course, with the competition rules, you are probably wondering why I want to attend this course. I’m so glad you asked. SQL Skills’ competence in training IT professionals in the skills necessary for SQL Server database development and administration is second to none. I have already attended one of their immersion events: IE0 – the Immersion Event for the Accidental or Junior DBA. I have used the skills Jonathan and Erin conveyed to troubleshoot a plethora of SQL Server administrative problems experienced both internally at my current company and externally on many of our customer’s production sites. The fast pace of the Immersion course and the extensive knowledge of the instructors kept me well engaged and eager for more knowledge after the course concluded. I have also benefited significantly from several SQL Skills Pluralsight courses. In particular, Paul’s courses on SQL Server internals have provided excellent starting points for my own experimentation on my personal lab or workstation, but have also given me the knowledge to diagnose and repair corruption, instruct other developers on the nature of the storage engine, and provide recommendations to customers on how to fix some of their more esoteric SQL Server issues. Given SQL Skills’ excellent track record for excellent education in SQL Server development and administrative skills, I would be very pleased to attend another one of their in-person immersion events.
As for the Part 1 Immersion Event on Performance and Optimization, I’m sure you are interested in why I’d make the best use of the knowledge the class will teach me. Well, the application our company designs is highly configurable and, thus, each customer has a vastly different data distribution which depends on their particular business requirements. Optimizing our application for such a wide range of data distributions is challenging and we typically prepare custom optimizations for each of our clients. These optimizations include custom indices, patch deployments of optimized stored procedures, or even plan guides to control SQL Server’s choice in physical join operators. I’d use the knowledge from this course to better understand how I can optimize our application for a wider range of customers simultaneously as opposed to custom deployments on an ad-hoc basis. In addition, I’d be able to provide training to other developers so they can contribute performant SQL code to our application, thereby decreasing our bus-factor and increasing our application’s quality.
Now, for the last point of interest: anyone reading this post cannot help but wonder what my favorite performance tuning challenge is. Fear not, for I will tell you. My favorite performance tuning challenges include optimizing queries which only seem to benefit from query/table hints. I am often surprised by SQL Server choice of operators or indices on a particular query or set of data. In some cases, the only way I can get a particular query to generate a performant plan is to add a hint forcing a particular physical join operator, forcing the use of a particular index, or forcing the query to revert to the legacy cardinality estimator (pre SQL2014). These challenges require a deep understanding of SQL Server’s query optimizer and some of the steps it takes to generate a…well…good enough plan. Should I win a free seat at the Performance and Optimization immersion event, I will put my new knowledge on the inner workings of the query optimizer to use to solve more difficult problems involving nudging queries to a more optimal plan.