数据库优化实践【信息跟踪篇】
关联性能计数器日志和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)获得调优建议,无论使用哪种工具,你都需要深入了解内部的细节原因,只有找出最根本的原因之后,解决性能问题才会得心应手。
本系列最后一篇将介绍如何优化数据文件和应用分区。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?