SQL Server性能计数器
时间:2010-09-22 来源:蛤蟆
计数器 | 描述 |
---|---|
Buffer manager/buffer cache hit ratio | 指可在缓冲池中找到而不需要从磁盘中读取(物理I/O)的页面的百分比。如果该值较低则可能存在内存不足或不正确的索引 |
General statistics object/user connections | 指系统中活动的SQL连接数。该计数器的信息可以用于确定系统得最大并发用户数 |
Locks/lock requests/sec | 指每秒请求的锁个数。通过优化查询来减少读取次数,可以减少该计数器的值。 |
Locks/lock timeouts/sec | 指每秒由于等待对锁的授权的锁请求数,理想情况下,该计数器的值为0 |
Locks/lock waits/sec | 指每秒无法立刻得到授权而超时的锁请求数,理想情况下,该计数器的值应该尽可能为0 |
Locks/number of deadlocks/sec | 指每秒导致死锁的锁请求数。死锁对于应用程序的可伸缩性非常有害,并且会导致恶劣的用户体验。该计数器必须为0 |
Memory manager/memory grants pending | 指每秒等待工作空间内存授权的进程数。该计数器应该尽可能接近0,否则预示可能存在着内存瓶颈 |
SQL statistics/batch requests/sec | 指每秒向服务器提交批的请求次数。该计数器被用来确定系统的负载大小 |
SQL statistics/ SQL compilations/sec | 指每秒编译数。理想状态下该计数器的值应该低,如果batch requests/sec计数器的值非常接近该计数器,那么可能存在大量的特殊SQL调用 |
SQL statistics/ re- compilations/sec | 指每秒的重新编译数。该计数器的值越低越好。存储过程在理想情况下应该只编译一次,然后被他们的执行计划重复利用。如果该计数器的值较高,或许需要换个方式编写存储过程,从而减少重编译的次数 |
当您怀疑计算机硬件是影响SQL Server运行性能的主要原因时,可以通过SQL Server Performance Monitor监视相应硬件的负载,以证实您的猜测并找出系统瓶颈。下文将介绍一些常用的分析对象及其参数。
Processor:%User Time
表示耗费CPU的数据库操作,如排序,执行aggregate functions等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。
Memory: Page Faults / sec
如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。
SQLServer:Cache Hit Ratio
该值越高越好。如果持续低于80%,应考虑增加内存。 注意该参数值是从SQL Server启动后,就一直累加记数,所以运行经过一段时间后,该值将不能反映系统当前值。
Process: Working Set
SQL Server的该参数应该非常接近分配给SQL Server的内存值。在SQL Server设定中,如果将"set working set size"置为0, 则Windows NT会决定SQL Server的工作集的大小。如果将"set working set size"置为1,则强制工作集大小为SQLServer的分配内存大小。一般情况下,最好不要改变"set working set size"的缺省值。
Process:%Processor Time
如果该参数值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。
Processor:%Privileged Time
如果该参数值和"Physical Disk"参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。另外设置Tempdb in RAM,减低"max async IO","max lazy writer IO"等措施都会降低该值。
Physical Disk:Avg.Disk Queue Length
该值应不超过磁盘数的1.5~2倍。要提高性能,可增加磁盘。
注意:一个Raid Disk实际有多个磁盘。