Diagnose SQL Server Performance Problems using Windows Performance Monitor
Diagnose SQL Server Performance Problems using Windows Performance Monitor
Monitoring SQL Server performance using Windows Performance Monitor (PerfMon) is a common
approach to identify performance issues. Here are some key performance counters you can use:
1. Processor:
o % Processor Time: Indicates the total CPU usage. High values might indicate CPU
bottlenecks.
o Processor Queue Length: Reveals CPU queue length. A sustained value higher than the
number of CPUs might indicate CPU pressure.
2. Memory:
o Available MBytes: Indicates the amount of free memory available on the system.
o Memory / Pages/sec: Tracks the rate at which pages are read from or written to disk.
3. Disk:
o Physical Disk / Avg. Disk sec/Read and Avg. Disk sec/Write: Measures the average time
taken for read and write operations on disks. High values indicate potential disk
bottlenecks.
o Physical Disk / Disk Reads/sec and Disk Writes/sec
o Physical Disk / Current Disk Queue Length: Indicates the number of pending disk I/O
requests. High values might indicate disk-related issues.
o Physical Disk / % Disk Time: Indicates the percentage of time the disk is busy. High
values could suggest a disk bottleneck.
4. SQL Server:
o SQL Server: Buffer Manager – Page Life Expectancy: This shows the average time a data
page remains in the buffer pool. Low values might suggest memory pressure.
o SQLServer: Buffer Manager - Buffer cache hit ratio: Indicates the percentage of pages
found in the buffer cache without having to read from disk.
o SQLServer: Buffer Manager - Checkpoint pages/sec:
o SQL Server: Access Methods – Full Scans/sec, Forwarded Records/sec, Page Splits/sec,
and Index Searches/sec: Indicates the rate of full table/index scans per second, which
can reveal inefficient queries or missing indexes.
o SQLServer: SQL Statistics (Batch Requests/sec, SQL Compilations/sec, SQL Re-
Compilations/sec)
o SQLServer: General Statistics (User Connections, Transactions/sec)
o SQLServer: Locks (Lock Waits/sec, Lock Timeouts/sec, Average Wait Time/ms)
o SQLServer: Memory Manager – (Memory Grants Pending)
o SQL Server: Memory Manager – Target Server Memory: Shows the target amount of
memory SQL Server wants to allocate.
o SQL Server: Memory Manager – Total Server Memory: Reveals the total amount of
memory currently used by SQL Server.
o SQLServer: Wait Statistics: Helps identify the most common wait types occurring in the
SQL Server instance. This can give insight into what the SQL Server is waiting on.
5. Network:
o Network Interface – Bytes Total/sec: Measures overall network traffic. Unusually high
values might indicate network-related issues.
o TCPv4 / Connection Failures: Indicates the number of TCP connection failures.