数据库优化实践【信息跟踪篇】
关联性能计数器日志和SQL事件探查器跟踪信息进行深入的分析
通过SQL事件探查器可以找出哪些SQL执行时间过长,但它却不能给出导致执行时间过长的上下文信息,但性能监视工具可以提供独立组件的性能统计数据(即上下文信息),它们正好互补。
如果相同的查询在生产库和测试库上的执行时间差别过大,那说明测试服务器的负载,环境和查询执行上下文都和生产服务器不一样,因此需要一种方法来模拟生产服务器上的查询执行上下文,这时就需要结合SQL事件探查器的跟踪信息和性能监视工具的性能计数器日志。
将二者结合起来分析可以更容易找出性能问题的根本原因,例如,你可能发现在生产服务器上每次查询都需要10秒,CPU利用率达到了100%,这时就应该放下SQL调优,先调查一下为什么CPU利用率会上升到100%。
关联SQL事件探查器跟踪信息和性能计数器日志的步骤如下:
1)创建性能计数器日志,包括下列常见的性能计数器,指定“手动”方式启动和停止计数器日志:
--网络接口\输出队列长度
--处理器\%处理器时间
--SQL Server:缓冲管理器\缓冲区缓存命中率
--SQL Server:缓冲管理器\页面生命周期
--SQL Server:SQL统计\批量请求数/秒
--SQL Server:SQL统计\SQL 编译
--SQL Server:SQL统计\SQL 重新编译/秒
创建好性能计数器日志,但不启动它。
2)使用SQL事件探查器TSQL Duration模板创建一个跟踪,添加“开始时间”和“结束时间”列跟踪,同时启动事件探查器跟踪和前一步创建的性能计数器日志;
3)跟踪到足够信息后,同时停掉SQL事件探查器跟踪和性能计数器日志,将SQL事件探查器跟踪信息保存为一个.trc文件;
4)关闭SQL事件探查器跟踪窗口,再使用事件探查器打开.trc文件,点击“文件”*“导入性能数据”关联性能计数器日志,此时会打开一个文件浏览器窗口,选择刚刚保存的性能计数器日志文件进行关联;
5)在打开的窗口中选择所有计数器,点击“确定”,你将会看到下图所示的界面,它同时显示SQL事件探查器的跟踪信息和性能计数器日志;
图 28 关联SQL事件探查器和性能监视工具输出
6)在事件探查器跟踪信息输出中选择一条TSQL,你将会看到一个红色竖条,这代表这条TSQL执行时相关计数器的统计数据位置,同样,点击性能计数器日志输出曲线中高于正常值的点,你会看到对应的TSQL在SQL事件探查器输出中也是突出显示的。
我相信你学会如何关联这两个工具的输出数据后,一定会觉得非常方便和有趣。
小结
诊断SQL Server性能问题的工具和技术有很多,例如查看SQL Server日志文件,利用调优顾问(DTA)获得调优建议,无论使用哪种工具,你都需要深入了解内部的细节原因,只有找出最根本的原因之后,解决性能问题才会得心应手。
本系列最后一篇将介绍如何优化数据文件和应用分区。