【发布时间】:2011-04-14 16:17:01
【问题描述】:
是否有任何工具可以专门监视/检测参数嗅探问题,而不是那些报告需要很长时间的查询?
我刚刚遇到参数嗅探问题。 (这并不太严重,因为如果正确缓存它会导致报告运行大约需要 2 分钟而不是几秒钟,如果重新编译可能需要 30 秒。而且由于该报告通常每月只运行几次,所以它是问题不大)。
但是,由于我写了报告并且知道它做了什么,我很好奇并去调查和使用 SQL Profiler,我可以在查询计划中看到估计行数为 1 的部分,但实际行数行数是几十万。
所以,让我印象深刻的是,如果 SQL 有这些数字,(或者至少可以得到这些数字),那么也许有某种方法可以让 sql 跟踪和报告哪些计划明显超出。
【问题讨论】:
-
否(除了捕获所有实际执行计划,这将非常昂贵!)。有一些请求能够通过扩展事件来跟踪这类基数错误,但目前还没有。我想你可以在
sys.dm_exec_procedure_stats中查看最小值和最大值之间差异很大的过程。 -
@Martin 无需捕获执行计划 - 它们都已在计划缓存中可用。
-
@Kragen -
Actual Rows仅在实际计划中可用。 OP 正在尝试找出估计行与实际行之间存在差异的情况。 -
@Martin,由于这是一条评论,我无法将其标记为已接受的答案。 (如果你想添加一个简单地说“不”的答案,我会接受)。
标签: sql-server performance monitoring