SQL性能监控重要性能指标的list
Monday, March 22, 2010
贴一下DBA同事的运维经验
对于运维人员来说,学会查看性能计数器是一个重要的技能手段
通过性能计数器,可以帮助我们缩小排查范围,快速定位问题原因
从系统角度来看,无外乎内存、磁盘、cpu等
(请注意我的次序,现在的cpu已几乎不成为服务器的瓶颈;cpu的性能问题,往往是由前2者引发的。磁盘性能问题,也有可能是内存引起的哦)
下面说说几个最主要的计数器:
----- ----- ----- ----- 以下部分摘自网上,红字部分是我个人的理解,欢迎指教与讨论 ----- ----- ----- -----
Memory: Pages/sec
描述:这个计数器记录每秒中RAM和硬盘上虚拟内存交换(换出+换入)的页数。
范围:如果SQL Server是这个服务器上唯一主要运行的应用,则这个值应该在0-20之间。当超出这个范围,建议增加物理内存。
(即越低越好,对维护人员来说,呵呵)
Memory: Available Bytes
描述:服务器可用的物理内存字节数
范围:这个计数器的平均值应该>5MB,SQL Server 2005 会试图一直维持4-10MB这个范围。当小于建议范围的时候,可以尝试提高SQL Server的性能,包括增加/3GB开关在Boot.ini文件。
(SQL会试图最大化的利用内存,你可以通过设置更改;最好给操作系统预留个几十M,方便应急情况下上去操作)
SQL Server: Buffer Manager: Buffer Cache Hit Ratio
描述:这个计数器相当重要,它说明了SQL Server 从缓冲区获取数据的命中率(如果缓冲区没有,只能去访问硬盘)。
范围:这个值应该在90%以上,理想情况是99%以上。当值比较低的时候,建议增加物理内存。
(即越高越好)
Physical Disk: Avg. Disk Queue Length
描述:这个计数器表明的是物理磁盘阵列的压力,即目前磁盘读取和写入请求队列的平均值。
范围:对单独的一个磁盘,如果其值大于2(如果是做了RAID的一组盘,假定有5个物理盘,则此判定值为2*5=10),且持续10分钟以上,则你可能碰到了磁盘I/O的瓶颈。因此这个值对单个磁盘应该 <=2。
(应用服务器也适用)
Physical Disk: % Disk Time
描述:这个计数器是判定物理磁盘阵列压力的指标。(不能针对一个逻辑分区或者阵列中的独立磁盘)
范围:如果这个值超过55%并持续10分钟以上,则数据库碰到了磁盘I/O瓶颈。因此这个值应该 <=55%。
(这是一个读/写的时间比值。读与写,事实上不同的厂家有不同的实现算法,所以相对于上一个计数器,这个指数我不常看,55%大家作个参考吧)
Processor: % Processor Time
描述:在数据库服务器上,每一个CPU都有此计数器的一个实例,它表明了独立CPU的利用率。
范围:如果总的% Processor Time (_Total) 超过80%且持续10分钟以上,就可能碰到了CPU的瓶颈。因此应该 <=80%。
(80%已经是严重问题了,到这个值以上服务器性能将急剧下降,应立即报警!个人认为60%就应重视起来,要去分析解决)
System: Processor Queue Length
描述:CPU处理任务队列中的任务个数。
范围:如果每个独立CPU,这个数值超过2,且持续10分钟以上,就可能碰到了CPU的瓶颈。因此对于每个独立CPU应该 <=2。
(应用服务器也适用)
----- ----- ----- ----- ----- ----- ----- -----
再附一个sql server的性能计数器,需要专业知识,有兴趣上官网,呵呵
除性能计数器外,SQL还有一些自带的监视、分析工具,这里篇幅有限不多写了,大家可以自己google一下(抓紧时间用吧)。主要的有:
² 管理sp、动态管理视图(SQL2005,很不错,推荐)
² SMS中的报表(傻瓜工具)
² 活动监视器
² profile(探查器?比较消耗资源,建议重要的生产库不要多用)
最后老生常谈一下:应用层、中间层的实现方式至关重要,到数据库层再来优化的就很有限了