| Resource issue | Rule | Description | Value | Source | Problem Description |
| Database Design | Rule 1 | High Frequency queries having # table joins | >4 | Sys.dm_exec_sql_text, | High Frequency queries with lots of joins may be too normalized for high OLTP scalability |
| Sys.dm_exec_cached_plans |
| Rule 2 | Frequently updated tables having # indexes | >3 | Sys.indexes, sys.dm_db_operational_index_stats | Excessive index maintenance for OLTP |
| Rule 3 | Big IOs | >1 | Perfmon object | Missing index, flushes cache |
| Table Scans | SQL Server Access Methods |
| Range Scans | Sys.dm_exec_query_stats |
| Rule 4 | Unused Indexes | index not in* | * Sys.dm_db_index_usage_stats | Index maintenance for unused indexes |
| CPU | Rule 1 | Signal Waits | > 25% | Sys.dm_os_wait_stats | Time in runnable queue is |
| pure CPU wait. |
| Rule 2 | Plan re-use | < 90% | Perfmon object | OLTP identical transactions should ideally have >95% plan re-use |
| SQL Server Statistics |
| Rule 3 | Parallelism: Cxpacket waits | >5% | Sys.dm_os_wait_stats | Parallelism reduces OLTP throughput |
| Memory | Rule 1 | Avg page life expectancy | < 300 (seconds) | Perfmon object | Cache flush, due to big read |
| SQL Server Buffer Manager | Possible missing index |
| SQL Server Buffer Nodes | |
| Rule 2 | Avg page life expectancy | Drops by 50% | Perfmon object | Cache flush, due to big read |
| SQL Server Buffer Manager | Possible missing index |
| Rule 3 | Memory Grants Pending | >1 | Perfmon object | Current number of processes waiting for a workspace memory grant |
| SQL Server Memory Manager |
| IO | Rule 1 | Avg Disk seconds / read | > 20 ms | Perfmon object | Reads should take 4-8ms with NO IO pressure |
| Physical Disk |
| Rule 2 | Avg Disk seconds / write | > 20 ms | Perfmon object | Writes (sequential) can be as fast as 1ms for transaction log. |
| Physical Disk |
| Rule 3 | Big IOs | >1 | Perfmon object | Missing index, flushes cache |
| Table Scans | SQL Server Access Methods |
| Range Scans | |
| Rule 4 | If Top 2 values for wait stats are any of the following: | Top 2 | Sys.dm_os_wait_stats | If top 2 wait_stats values include IO, there is an IO bottleneck |
| 1. ASYNCH_IO_COMPLETION |
| 2. IO_COMPLETION |
| 3. LOGMGR |
| 4. WRITELOG |
| 5. PAGEIOLATCH_x |
| Blocking | Rule 1 | Block percentage | > 2% | Sys.dm_db_index_operational_stats | Frequency of blocks |
| Rule 2 | Block process report | 30 sec | Sp_configure, profiler | Report of statements |
| Rule 3 | Avg Row Lock Waits | > 100ms | Sys.dm_db_index_operational_stats | Duration of blocks |
| Rule 4 | If Top 2 values for wait stats are any of the following: 1.LCK_x | Top 2 | Sys.dm_os_wait_stats | If top 2 wait_stats values include locking, there is a blocking bottleneck |