我可能从错误的角度处理这个问题,但我正在考虑的是SQl服务器的某种性能监视工具,其工作方式类似于代码性能工具,例如:我希望看到每个存储过程被调用多少次的输出,平均执行时间以及可能的各种资源使用统计信息,例如缓存/索引利用率,重新磁盘访问和表扫描等。
据我所知,SQL Server附带的性能监视器只记录了各种调用,但没有报告我正在寻找的variosu统计数据。我可能只需要一个工具来分析日志输出?
答案 0 :(得分:1)
SQL Server Profiler确实可以提供您想要的内容,但可能不是非常直观。
要监视存储过程,您可以跟踪SP:Completed
事件并观察CPU使用情况,I / O读/写和持续时间以获得所需内容。对于缓存监控,您需要监控SP:CacheHit
,SP:CacheInsert
,SP:CacheMiss
和SP:CacheRemove
事件。
如果你想要其他工具,我强烈推荐Quest's Performance Analysis for SQL Server,它可以在一个易于使用的软件包中为你提供你想要的东西以及更多。
答案 1 :(得分:0)
事实证明,SQL Server Profiler会根据存储的proc名称报告存储过程调用的持续时间,它只是知道要侦听哪些事件的伙伴。 SP_Counts模板似乎是报告存储过程名称的最佳起点。如果您切换为使用“已完成”代替“已启动”事件,则可以选择报告每次通话的持续时间。从那里,您可以将记录的跟踪保存到XML文件,并编写XPath / XQuery来汇总在每个存储过程中花费的总和和平均值。我最后编写了一个小的C#应用程序来升级数据并将其输出到CSV文件,这样我就可以在excel电子表格中查看它并按各列进行排序 - 例如平均最慢的存储过程,最长总时间的存储过程,以及最高调用次数的SP。