goback add

SQL SERVER性能调优之二(是否存在硬件瓶颈)

3115 点击·0 回帖
灯火互联
楼主

(一)是否存在一个服务器性能基线?
      (1)、有了基线才有一个衡量的指标,否则一切计数器都是没有意思。否则可能我的系统本来就很慢,例如现在公司就有一个OLAP系统,每天就花了三个小时产生一个报表。也不是问题。
      (2)、有了基线才能确认我的服务器确实存在调整的必要了,例如今天发布新的代码后,性能明显偏离基线了,说明我的程序或者T-SQL代码可能却在缺陷。

(二)如何建立一个基线。
     (1)、使用system perfmon收集性能计数器信息。
     (2)、使用sys.dm_os_performance_counters DMV,可惜该DMV不包含一些OS级别的性能计数器。  www.atcpu.com  
     (3)、根据前两步的信息确定一个合理的基线。

(三)几个重要计数器。
(1)、Memory:Pages/sec
      这个计数器表示了每秒钟内存和磁盘之间交换的页面数,如果该值很高的话,可能预示你的服务器可能存在内存压力。可以考虑让SQL动态的分配内存,不要设置SQL最大使用内存,如果该服务器还运行其他消耗内存的程序可以考虑移除,或者增加很多的内存。一般该值推荐在0~20。
(2)、SQLServer:Buffer Manager:Buffer cache hit ratio
     这个计数器表示SQLServer从缓存中而不是磁盘中获得数据的概率,即缓存命中率。在一个OLTP程序中为了较好响应时间,该计数器值应该大于99%。否则也可能预示你的服务器可能存在内存压力,解决办法同上。  www.atcpu.com  
(3)、PhysicalDisk :Avg. Disk Queue Length
    这个计数器表示磁盘队列长度,该值应该低于2,如果该计数器值很高,可能预示你的服务器存在IO的压力,应该增加IO子系统性能,配置更好的RAID,或者是更好的存储。
(4)、System:Processor Queue Length
这个计数器表示cpu列长度,该值应该低于2,如果该计数器值很高,可能预示你的服务器存在CPU的压力,应该增加更多或者更强的CPU。或者减少服务器的负载。
(5)、Processor:% Processor Time
           这个计数器表示CPU的使用率,该值最好低于30%,不能高于80%,如果该值达到99%,可能服务器就已经僵死了,应该产生一个警报通知DBA介入。解决该问题可以Processor Queue Length解决方法一样。




喜欢0 评分0