摘要: 故事来源于《sql server2012 深入解析和性能分析》
1.重要的PerfMon CPU计数器
计数器 | 查看内容 | 发生问题的条件 | |
Processor | %Processor Time | CPU为生产环境的请求提供服务消耗的时间占总CPU时间的百分比 | >80% |
Processor | %Privilege Time | CPU为内核模式请求提供服务消耗的时间占总CPU时间的百分比 | >30% |
Process | %Processor Time(sqlserver) | SQL server运行在CPU上的时间(用户模式+特权模式)占总时间的百分比 | >80% |
Process | %Privilege Time(sqlserver) | SQL server以特权模式运行的时间占总时间的百分比 | >处理器时间(sqlserver)的30% |
2.内存性能计数器
计数器 | 查看的内容 | 发生问题的条件 | |
Merory | Availabel MB | 以MB计算的空闲物理内存量;小于100MB的值表明具有外部内存压力或者最大服务器内存设置太高了 | <100MB |
Memory | Pages/sex | 这个值不一定意味着有问题。如果怀疑有外部内存压力的时候查看这个计数器,而且考虑这个计数器的时候总是要考虑其他内存计数器 | >500 |
Memory | Free System page Table Entried | 在X86服务器上,页表项最有可能耗尽(即成为瓶颈),特别是在boot.ini中使用/3GB或USERVA开关时 | <5000 |
Paging File | %Usage,%Usage Peak | 一般来说,工作负荷会增加虚拟地址空间的要求,而虚拟地址空间会增加对页面文件的需求。对页面文件的频繁使用通常表明存在内存问题。关于调整大小的详细信息可产月第3章 | 70% |
MSSQL Buffer Manager | Page Life Expectancy | 一个数据页在缓冲池中驻留的秒数。拥有足够多内存的服务器的Page Life Expectancy值会很高。随着时间推移,查看这个计数器的趋势。总之,这个值应该保持稳定或者逐渐更高。这个值的频繁下降意味着内存压力 | <300秒 |
MSSQL Buffer Manager | Buffer Cache HitRatio | 由缓冲池中的数据页满足的页面请求的百分比。Page Lifi Expectancy是一个缓冲池健康的更好的总体指标 | <98% |
MSSQL Buffer Manager | Lazy Writes/sec |
每秒钟SQL Server 将脏页从缓冲池(内存)迁移到磁盘的次数 |
>20 |
3.重要的PerfMon磁盘计数器
计数器 | 查看的内容 |
发生问题的条件 |
|
Physical Disk | Avg.disk sec/Read | 完成从磁盘读取的平均时间,以秒计算 |
>0.010 c次优 >0.020 糟糕 |
Physical Disk | Avg.disk sec/Write | 完成从磁盘写入的平均时间,以秒计算 |
>0.010 c次优 >0.020 糟糕 |
4.重要的SQL Server PerfMon计数器
计数器 | 查看的内容 | 发生问题的条件 | |
MSSQL SQL Statistics | Batch Requeste/sec | 每秒钟SQL Server处理的T-SQL批数。越高越好。适合用于基准,在进行任何比较的时候最好考虑这个计数器 | >1000表示服务器的活动强度高 |
MSSQL SQL Statistics |
SQL Compilations/sec |
每秒钟需要进行计划编译的批数。高编译数要么表示计划重用很糟糕,要么表示即席查询太多 | >每秒批请求总数的20% |
MSSQL SQL Statistics | SQL Recompilations/sec | 每秒钟语句重编译的次数 | >每秒批请求总数的20% |
MSSQL General Statistics | Processes Blocked | 目前正被阻塞的进程数 | >0的时候进行调查 |
MSSQL Locks | Lock Waits/sec | 每秒钟等待锁的用户请求数。可以表明阻塞的发生 | >0 |
MSSQL Locks | Lock Timeouts/sec | 每秒钟发生锁超时的次数。大于1的时候就应该进行调查 | >0 |
MSQQL Transactions | Free Space in Tempdb(KB) | tempdb中的可用空间,以KB计算 | <100MB |