Have you ever imagined how often SQL Server performance issues are actually caused by poor capacity planning? Sometimes a SQL Server database has insufficient storage performance, an instance is running out of memory, or the server level CPU is skyrocketing to an unhealthy level.
All these things are very common in environments where there has not been a proper method and software for planning and optimizing the SQL Server capacity.
Common SQL Server Performance Problems
A very typical scenario is a situation where the storage device latency or throughput is too high compared to the volume of data that needs to be processed in the database. It’s very tricky to try to optimize such an environment, especially when the size of the database is large and there are many arbitrary TSQL queries ongoing, returning large datasets. All of these lead to heavy RAM usage and exhausted disk lookup and scan operations.
Another common scenario is a situation where the SQL Server instance page life expectancy and buffer cache hit ratio start to fall down, constituting significant query performance issues. There is just not enough RAM to handle all the generated workload.
One of the worst scenarios is when the CPU usage hits the server limits and there is no way to scale up the existing server. Adding an extra socket for physical hardware or some VCPU’s for the virtual machine may be the only reasonable option when TSQL queries and other SQL Server services are already running in the most optimal way.
How Capacity Planning Comes into Play?
How to prevent all this mess before it’s too late? With a proper capacity planning method and software, you can decide how well your server hosts, virtual machines, SQL Server instances, and databases will run.
The most important point of the capacity planning is to secure the desired service levels without sacrificing the performance or availability of the SQL Server platform during its planned lifecycle. Another great advantage in well-executed capacity planning is the generated savings compared to guesswork.
Proper capacity planning software offers you the possibility to set up different baseline and service level criteria for each environment and individual server. You must be able to define which servers are for development, testing, acceptance, and production use. If you can’t, you will run into serious problems, because you cannot set different capacity needs for different kinds of server workloads. You need to set the proper threshold levels for each server in terms of CPU and RAM usage, and you have to be able to understand the storage needs of new setups. The software should consider individual trends for each performance counter such as average and peaking CPU, RAM usage, storage latencies, IOPS, MB/s and more. You must be able to automate the process for setting up physical servers, virtual machines, Azure VM’s and such for the source servers and instances, and if you want to consolidate your servers you need to have intelligent automation for calculating the optimal arrangement of source instances into target servers. You should also understand the performance differences of different hardware, VM and Azure setups.
Call for Action
Did you know that there is such software available on the market? It’s called SQL Governor. With this software, you can automate tedious, cumbersome capacity planning work in the most optimal way. SQL Governor helps you to tackle all the various aspects listed above. In addition, it benefits your whole organization, as with SQL Governor you can end up saving up to 50% on the licensing, hardware and service costs of your new SQL Server platform. And what is even more important, you won’t end up in an out of the capacity situation! You can read more about the software in one of my previous articles.
Reference: Pinal Dave (https://blog.sqlauthority.com)