People are constantly asking me what to do to make money. My answer is, “I spend time with people who have trouble with SQL Server Performance and I make money by helping them”. Once I admit that I make money by helping people tune their SQL Server, the next set of questions almost always follow. This is how the conversation usually continues…
DBA Joe: “Hey Pinal, how do you make money?”
Pinal: “Well, my primary focus is to help people to optimize their SQL Server performance.”
DBA Joe: “Oh that sounds very exciting. Performance Tuning is a very difficult subject. Isn’t it?”
Pinal: “Well, of course it is. There are so many dimensions and so many complex subjects.”
DBA Joe: “Like what? I assume you primarily focus on IO, CPU and Memory.”
Pinal: “Well, yeah, but to get maximum SQL Server performance, we need to focus on many different aspects. One needs to focus on the following major topics if we want to achieve maximum performance.
- Index Analysis
- Index Optimization
- Index Maintenance
- Server/Instance Level Configuration Check
- I/O distribution Analysis
- SQL Server Resource Wait Stats Analysis
- TempDB Review
- Database Files (MDF, NDF) and Log File Inspection
- Log Reviews (Windows Event Logs, SQL Server Error Logs and Agent Logs)
- DBCC Best Practices Implementations
… And many more.”
DBA Joe: “Very interesting.” After a brief pause, he continued “Hypothetically, if we assume that SQL Server always performs efficiently and optimally, what would you have done differently with your time and how would you have helped your customers?”
Pinal: (I was indeed speechless)
DBA Joe: “Don’t you think we can focus on many other important tasks for SQL Server, if we do not spend countless hours on fixing its performance.”
Pinal: “I agree. You have a point.”
Well, that was the conversation. It made me think that DBA and Developers often spend hours fixing SQL Server performance. If they had additional time on their hands, they could perform other important tasks that are often neglected or not considered a priority.
Task #1: Backup and Recovery
Every DBA knows the importance of the backup and establishes backup processes as soon as they setup the server.
However, once a backup process is setup, this entire process is pretty much neglected. Most of the time people assume that all the backups are taking place as they should. When a DBA questions the status of the backup they usually check two things:
- The status of the backup job
- The backup file size in the backup folder
If they find no errors in the backup job and some large size in the backup folder for their database, often the DBA feels everything is alright and they focus on other important tasks like performance tuning.
I have seen countless scenarios of DBAs attempting to restore their backups just to realize that the file is not good enough to restore. Consequently, they face many errors. There are so many different issues one can face when they attempt to restore their backup, which they originally believed was perfect.
If DBAs have more time-
If your DBA has more time on their hand, they will focus on backup and recovery strategies and build robust recovery processes. The DBA can spend more time to build a backup process where they are taking full backup, differential backup, and log backup at regular intervals and test them for a successful restore. They would create a process where they randomly take the setup of the backup and restore it on a separate development server.
Task #2: Database Security
The online world has become a scary place. Every day we hear about new ransomware or viruses. The amount of SQL injection attacks on any database exposed to the web is countless. However, there are so many DBAs who are still unsure about how to secure their database from external and internal attacks.
When DBAs set up database security, they usually depend on their Network Administrator to setup the necessary external security perimeters for cyber-attacks. Regarding internal security, my experiences show only 25% of organizations set up various login and user roles within their business. In most cases, I see DBAs and Developers connecting to a database with sa user name, which is pretty dangerous.
If DBAs have more time-
Many DBAs have confessed to me that they wish they had more of a understanding about the Database Security concepts that SQL Server has introduced. If DBAs had more time, they would be setting up various logins and enforcing various users to follow a more rigorous security routine.
Besides creating user roles and logins, there are so many unexplored concepts out there regarding security. If DBAs had more time they could better focus on Database Encryption, Row Level Securities and many other related concepts.
Task #3: High Availability and Disaster Recovery
There once was a time before social media. We only accessed computers when we were at work and most of our necessary activities were expected to happen during business hours. However, the world has changed immensely in the past few years. Most of us have smart phones and are online 24/7. The business patterns of users have changed significantly and the world has become a much smaller place.
Today, it is essential that the business is constantly running without any exceptions. It is the DBAs primary responsibility to ensure that data is continually being served to an application as efficiently as possible.
Recently, I asked a room full of DBAs how many of them have ever worked end-to-end (installing, configuration and maintenance) with any of the following technology, which is related to High Availability:
- Log Shipping
To my surprise, only 1 out of 4 individuals raised their hand. I repeated this experiment multiple times with different sets of individuals, in different locations, and I the same results were found every time. It was very difficult to spot a DBA who had end-to-end experience with High Availability features.
I believe one of the core tasks of the DBA is to make sure that in a case of a disaster (natural or man-made) their data is always available to their consumer.
Just like everything else in the technology world, there is constant innovation in the High Availability area. The DBAs that focus on routine daily tasks regarding SQL Server performance tuning, often have very little time to learn and evolve.
If DBA has more time-
Setting up High Availability scenarios is just a beginning. The real challenge is to test the infrastructure at frequent intervals. Performing mock drills to simulate disaster is one of the most critical tasks, but in reality, very few organizations actually practice them. Even though organizations have set up proper High Availability, DBAs are often scared to test them, as they are afraid if something goes wrong they would have to spend more time fixing the issues.
If DBAs had more time on their hand, they would not only setup the proper layout for high availability, but they would run various stress tests on their environment and create a robust plan which will keep their data safe and available at a rapid speed to their consumers.
Let us come back to reality. There are only a few DBAs who have the luxury of time, where they can spend their efforts on backup strategy, security and high availability. Most DBAs are in a constant battle of time management and the tasks related to SQL Server Performance usually take priority.
There are multiple ways to solve the issue which we have previously discussed.
Solution 1: Have a dedicated team who handles the critical area of the database and therefore is not dragged into every single issue related to live production server.
(However, most small organizations can’t afford such luxury)
Solution 2: Offload your SQL Server Performance issues to an automated tool, which gathers all the necessary data and presents them in reports with appropriate action items from its collective intelligence.
In future blog posts we will discuss both of these solutions in detail.
Call to Action
Meanwhile, please answer the following questions in the comments section below:
- Which solution are you practicing within your organization?
- If you had more time, what would you like to improve in your organization so your data is safe, secure, and always available?
~ Pinal Dave (https://blog.sqlauthority.com)