成为SQL服务器性能专家 不可错过的教程(1)


有没有可能在短短几秒内回答这个问题?也许你试图查看性能监视器PerfMon里面的性能计数器。里面有大约1000个名称各异的不同计数器。你可能会问:“Skipped Ghosted Records/sec”每秒跳过的幻影记录数)= 10,这个数值好还是坏?正确的回答是,这个数值可能并不重要。不过,有些计数器确实很重要。本文将帮助你找出这类计数器,还会教你如何为最常见的性能问题排除故障。

想开始入手,先从下列网址安装SQL Heartbeat工具:
http://www.sqlsolutions.com/downloads/activity-monitor/Download.html
连接到你的服务器后,你会看到服务器树结构中的两个类别:

点击“Online Activity/SQL Heartbeat”节点,你会立即看到五个不同的图表。但是最好点击“Historical Data”历史数据),等待一两天,等到累积了更准确的衡量指标为止。之后,你该查看图表上的哪些内容呢?首先,你应该关注一下Waits图表:

顺便说一下,你有没有注意到这张图上的周期性模式?比如说,周末期间活动比较少,到了晚上活动增加。为了更全面地了解数据库在正常工作时间段的运行状况,你在分析时可以将这些时段排除在外特别是由于这些时段可能是进行完全备份的时候)。我们可以排除这类数据,让我们的图表更流畅:

下一步是查看哪个类别最糟糕。如果主色是蓝色或黄色代表读取或写入),那么你的服务器是磁盘输入/输出密集型的。下面是个示例:

为什么是输入/输出密集型的?点击Physical R/W图表。问题可能出在工作负载上,比如说输入/输出操作次数太多: 

非常频繁的输入/输出活动可能是糟糕的高速缓存命中率引起的。你可以点击Cache Hits高速缓存命中)按钮来证实:

注意:不要使用性能监视器PerfMon所报告的“Cache Hits Ratio”高速缓存命中率)。PerfMon报告的只是“医院里的平均温度”而已——它是对周末和繁忙时段、夜间索引碎片整理和白天操作求平均值,用的是不同的使用模式。

有时候,“高速缓存命中率”足够好,但是延迟很差。点击Seek Time寻道时间)按钮来证实:

 

  

50毫秒ms)意味着,服务器每秒只能执行20次输入/输出操作。这样的速度仅仅相当于老式软盘!
有些服务器是处理器密集型的,下面是一台典型的处理器密集型服务器的模样:

一般来说,如果服务器是处理器密集型的,情况并不坏,只要绝对数值不是很高千万要牢记:Y轴表示服务器每秒使用所有处理器时的处理器毫秒,所以在4个处理器上,每秒使用处理器最多可以有4000毫秒。)但是如果处理使用率的绝对值很高,那么点击Query Stats查询统计数字)按钮。你会看到按处理器、读取和写入分类的前十大有问题的查询。这些查询很可能是需要优化的对象。

顺便说一下,你每天可以通过电子邮件来获得所有这些报告。只要在SQL Heartbeat中进行配置:点击工具栏中的Reports报告)按钮。


相关内容