最近几天,从 master 数据库运行的 service broker 命令消耗的资源比以前多得多。对数据库的影响很大(从坏的方面来看),它会导致内部等待。我没有在 10.07.2014 之前和之后对数据库进行任何更改(您可以在图中看到这个开始日期)。我检查了是否在任何数据库中启用了服务代理,发现它在 Tempdb 和 Msdb 中启用。什么会导致这些变化?
我附上了一张图表,你可以看到行为的变化。
我附上了另一个屏幕截图,你可以从 sp_who2 看到,我不明白的是,你可以看到“LastBatch”是非常旧的,从 10 月 12 日 07:55 开始(这个结果来自今天 10/ 20/2014 10:23 当地时间)。为什么会话没有关闭。?
看起来您正在使用无法识别良性等待的工具。请参阅等待统计信息,或者请告诉我哪里疼。没有影响,只是监控不好。
我建议您阅读Filtering out benign waits。引擎有某些后台任务,当这些后台任务没有任何工作时,它们只是闲置,等待工作。在等待工作时,等待时间由等待统计数据汇总,但不幸的是,无法区分“等待资源继续工作”或简单地“等待某事开始工作”。后一种情况是“良性等待”。这些任务实际做的工作越少,它们聚合的等待统计数据就越多。这些任务永远不会关闭,也没有要关闭的会话。你已经开始了狙击狩猎。
有关详细信息,请阅读了解 SQL Server 如何执行查询和如何分析 SQL Server 性能。