SQLServer:Access Methods - Full Scans / sec
Value greater than 1 or 2 indicates that we are having table / Index page scans. We need to analyze how this can be avoided.
SQLServer:Access Methods - Page Splits/sec
Interesting counter that can lead us to our table / index design. This value needs to be low as possible.
SQLServer:Access Methods - Table Lock Escalations/sec
This gives us the number of times a table lock was asked for in a second. A high number needs a revisit to the query and the indexes on the table.
SQL Server:Buffer Manager - Buffer cache hit ratio
The percentage of pages that were found in the memory. Higher the value the better. Preferred around the 90% mark. This included the availability of the procedure and the data cache in the system.
SQL Server:Buffer Manager - Database pages
This number shows the number of pages that constitute the SQL data cache. A large changes in this value indicates the database is swapping cache values from the cache. We need to either increase the memory of the system or the max server memory parameter.
SQL Server:Buffer Manager - Procedure cache pages
This indicates the number of procedures are present in the cache. This is the location where the compiled queries are stored.
SQL Server:Buffer Manager - Stolen pages
This is the number of pages that were stolen from the buffer cache to satisfy other memory requests.
SQL Server:Cache Manager - Cache hit ratio
The ratio between the cache hits and misses. This counter is a good indicator of our caching mechanism in SQL Server. This value needs to be high in the system.
SQL Server:Databases - Active Transactions
The number of currently active transactions in the system.
SQL Server:Databases - Log growths
The number of times the log files have been extended. If there is lot of activity in this counter we need to allocate static and large enough space for our log files.
SQL Server:Databases - Transactions/sec
This number indicates how active our SQL Server system is. A higher value indicates more activity is occurring.
SQL Server:General Statistics - User Connections
The number of users currently connected to the SQL Server.
SQL Server:Locks - Lock Requests/sec
Number of requests for a type of lock per second.
SQL Server:Locks - Average Wait Time
This is the average wait time in milliseconds to acquire a lock. Lower the value the better it is.
SQL Server:Locks - Number of Deadlocks/sec
The number of lock requests that resulted in a deadlock.
SQL Server:Memory Manager - Optimizer Memory
The amount of memory in KB that the server is using for query optimization. We need to have a steady value in this counter. A large variation in the value suggests there is lot of Dynamic SQL is getting executed.
SQL Server:Memory Manager - Connection Memory
Amount of memory in KB used to maintain the connections.
SQL Server:SQL Statistics - SQL Compilations/sec
The number of times per second that SQL Server compilations have occurred. This value needs to be as low as possible.
SQL Server:SQL Statistics - SQL Re-Compilations/sec
This needs to be nil in our system as much as possible. A recompile can cause deadlocks and compile locks that are not compatible with any locking type.
* Other generic performance counters are not added to this list. This will include %Processor and Disk monitoring counters. Some of them have been outlined below.
Processor - %Processor Time
The percentage of time the processor spent executing a non-idle thread. This value is subtracted from the time the processor was idle 100 percent. This is an indicator to the overall CPU utilization in the system.
Processor - %Interrupt Time
The percentage of time the processor spent servicing hardware interrupts. This can be any activity on the server machine. This needs to be 0 while our testing process.
Processor - Processor Queue Length
This counter indicates the number of threads that are waiting in the processor queue. It can be also interpreted as the number of threads that are waiting to be run by the processor. If this value is greater than the number of processor then we have aCPU bottleneck in the system.
Processor - Context Switches/sec
This is an interesting counter. A typical context switch occurs when the OS or the application is forced to change the executing thread on one processor to another thread executed on another processor. This value has to be as small as possible. Context switches are not avoidable in multi-processor machines. Hence any value below 10000 is fine.
PhysicalDisk - %Disk Read Time
Time spent by the disk for read operation. We can have disk by disk analysis also to narrow down any read IO bottlenecks.
PhysicalDisk - %Disk Write Time
Time spent by the disk for write operation. We can have disk by disk analysis also to narrow down any write IO bottlenecks.
PhysicalDisk - Avg. Disk Queue Length
Average number of requests that waited for the read and write requests in the particular disk. A high value suggests we have a IO bottleneck.
Memory - Page Faults/sec
Total number of faulted pages handled by the processor per second. This value needs to as small as possible.
Memory - Pages/sec
The number of pages written to disk or from disk to resolve page faults. This would be the sum of page reads/sec and page writes/sec counter