Since I took the consulting way for about a year now, it is interesting to see that the fundamentals and basics of engaging with my customers have not changed for decades. I get a number of requests every single day and I need to prioritize starts. Having said that, in the mayhem of qualifying an engagement, I have my own way to set and get expectations. In this blog, let me take a tour on that thought process and give you the secret recipe that works for me till date. I am working as an independent SQL Server Performance Tuning Consultant and I love my job.
I know this is not something written on stone, there are ways you handle the situation in hand. Since I do performance related engagements with customers, most of them come with a simple statement – “My Server is slow and I want you to solve this.”. This is like music to my ears when I hear such requests. But the logical mind of mine goes to tell, do you know what they have? Will we be able to solve the problem just with this context? After this crosses the mind, the logical step I take before any assignment is to have a pre briefing call. This sets the tone of the deliverables from my end and also sets me up to be prepared for anything I need to do as homework. So what do I ask during the call:
Pre-Call 101 – SQL Server Performance Tuning
Here are some of the typical questions I take as notes before getting into an assignment. I am sure these will give you some guidance too when working on your environments:
- What were the recent changes? Examples include:
- When did the issue first start? What was the last time it worked?
- How did you become aware of the issue and were there any errors (error log, the Application log, Application stack etc)?
- What is the database information around size, files, tables accessed, HA/DR implemented, monitoring software used, server sizing etc?
- Name and other information of the application (type, user profiles etc)?
- Is it occurring randomly or is there a pattern (time of the day, night, when the load is above a certain value, month end alone etc)? What is the duration of the issue when it occurs?
- Is issue occurring right now and unresolved?
- What is the issue? What symptoms are being observed? What makes them feel it is a problem?
- Versions of SQL Server and Operating System? Physical hardware, on-premises VM or Azure VM?
- Updates/Hotfixes to OS, SQL Server, Application etc.
- Changes of maintenance jobs
- Hardware changes/upgrades in the recent past
- Configuration changes made on the server, network, switch etc
- Data and usage changes
- How did it get resolved in the past? What are the steps the admins take to resolve? What were all the resolutions applied from the various search engines before landing to me?
- What is your specific end goal of this engagement? What SLA are we talking?
- What have you done so far? Have other consultants involved or was a Microsoft support contacted etc?
If you really see, I try to walk through some of the basic understanding of the application and everything that surrounds the database. Once all the information is available in hand, I have confidence to what can be delivered and how it can be delivered. What is out of scope and what is within the scope of the engagement.
I think at this moment I have aired some of my secrets. But I am sure I am missing things that can be a great learning for me too. Do let me know if you use something similar or are there things that you ask customers? Do let me know via comments as it would make this blog much more useful. I always felt, sharing is caring – I hope you will too.
In the future blog post I will highlight how I work with customers once we move to performance tuning phase. It is equally interesting and there is plenty of learning. As I said in the first line of this blog post, I am loving every single bit of my job as a SQL Server Performance Tuning Consultant.
Reference: Pinal Dave (https://blog.sqlauthority.com)