为什么sp_reset_connection通过 SQL Server Profiler 查看系统存储过程的执行时间会超过几毫秒?
我使用 SQL Server Profiler 从生产系统中获取了一个简单的跟踪,然后使用 SqlNexus 对其进行了分析。SqlNexus 表明 sp_reset_connection 的累积持续时间最长——占整个跟踪的 33%。观察到的持续时间范围为 0-7 秒(12 到 6,833,270 微秒),但平均为 0.956 秒。
我知道当池连接被重用时会调用 sp_reset_connection。我已经看到一个建议,这可能是由于无关的痕迹而发生的,但情况似乎并非如此。
我已经阅读了调用 sproc 时服务器正在做什么,但我不相信在这种情况下,任何这些都会有问题——代码不会留下需要清理的开放事务或巨大的临时表。
我还查看了https://serverfault.com/questions/199974/sp-reset-connection-taking-a-long-time-to-run但这没有帮助。
编辑(2013-12-23): 在所有情况下,读写都是0,CPU几乎总是0(只有两个非零CPU实例,都是16ms)。