Sunteți pe pagina 1din 2

SQL SERVER � Lots of Runnable SPID � What Next?

August 16, 2019


Pinal Dave
SQL Performance
No Comments
Has it ever happened to you that you have plenty of the CPU available event though
there is a huge queue of Ruunable SPID? Just another day I worked on a consulting
engagement Comprehensive Database Performance Health Check, and once we completed
the task the server started to run amazingly fast. The reason was the server had
lots of available CPU but there was another resource bottleneck which was making
the server to underutilizing the CPU. Once we fixed this issue, we ended up on a
very different issue where we had lots of runnable SPID and CPU was still
underutilizing. Here is how we fixed the situation of SPID.

SQL SERVER - Lots of Runnable SPID - What Next? runnablespid-800x390

CPU Pressure � SPID


The first thing is to check if there is a CPU pressure or not. It is very simple to
do so by running the query which I have listed in the following three blog posts.

Solarwinds
SQL SERVER � Measure CPU Pressure � Detect CPU Pressure
SQL SERVER � Detecting CPU Pressure with Wait Statistics
SQL SERVER � Changing Max Worker Count for Performance
Once we identify it had CPU pressure the next task was to look for the queries
which are using lots of CPU and very little other resources.

Expensive Queries
Here is the blog post which lists all the expensive queries.

SQL SERVER � Identify Most Resource Intensive Queries � SQL in Sixty Seconds #028 �
Video
SQL SERVER � SSMS: Top Queries by CPU and IO
SQL SERVER � Activity Monitor � Active Expensive Queries
SQL SERVER � Find Most Expensive Queries Using DMV
Once you identify which queries are creating the performance issues, the next step
is to work on the queries to tune them. There are three things which I focus on
when I have to start tuning the queries.

Re-write the operator which is expensive


Re-write the logic to use least IO
Removal of indexes (I rarely create new indexes for a single query)
Once I complete the task, the next thing is to focus on server health.

Server Health Checks


Here is a brief list of activities which we will do for a performance health check:

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
So far in most of the cases, when we reach the end of the list of the Server Health
Check, the Runnable SPIDs will be decreased to next to nothing. In the rare case,
we have to investigate further.

S-ar putea să vă placă și