Answers:
我将使用SQL Profiler跟踪生产数据,并收集具有最大读写量的代码/批次。过滤跟踪以仅获取读取/写入次数较高的过程和批次。选择一个适合您的样本:比方说超过100万次读取或写入。
我将对那些对开发/测试机器的调用进行采样,并在Management Studio中运行它们,并启用选项“包括客户端统计信息”(在菜单查询-包括客户端统计信息中)。然后,您将有一个单独的窗口,其中包含客户端统计信息:从客户端发送的字节,从服务器接收的字节。
不要在不过滤数据的情况下在生产数据库上进行跟踪!!!!尽可能过滤(按数据库,主机名以及您所相信的内容),然后才开始跟踪。:-)之后,请不要忘记关闭Profiler。
PS:我记得一个不错的选择:在一段时间的跟踪中,还应该使用Perfmon保存数据(仅选择IO参数)。Profiler具有将跟踪文件和perfmon数据文件一起导入的良好功能。当您有最大的IO峰值时,您就可以看到那里。
PS2:我同意Gaius的选择更为优雅。但是我留给后代一个庞大的答案!:-)
如果您尚未查看它,则可能需要查看Adam Machanic的sp_WhoIsActive。他最近发表了一系列博客文章,解释了sp_WhoIsActive内置的不同功能,其中一个是@delta_interval。
这不仅会向您显示总体上占用最多CPU或I / O的内容,而且还可以向您显示当前正在占用最多CPU或I / O的内容。
请查看以下博客系列,以获取有关此功能的完整说明:
http://whoisactive.com/docs/01_background/
以下博客文章解释了如何对sp_WhoIsActive的输出进行排序并选择要显示的列:
http://whoisactive.com/docs/24_output/
这是他设置的以下更新链接上可用的众多帖子之一。
截至此答案发布时,版本11.0已可用,因此,如果您使用的是旧版本,则可能是时候升级了:D