11

我试图了解 SQL Server 执行计划中的物理运算符。这个页面很有帮助:

http://technet.microsoft.com/en-us/library/ms191158.aspx

SSMS 2008 显示了一些在 SSMS 2005 中未显示的物理运算符属性:Estimated Number of ExecutionsNumber of Executions。但这些实际上是什么意思,它们与重新绑定和倒带有什么关系?

Estimated Number of Executions特别有趣,因为它似乎没有存储在 XML 中。那么它是如何计算的呢?似乎等于Estimated Rebinds + Estimated Rewinds + 1.0。但如果是这样,为什么Number of Executions不等于Actual Rebinds + Actual Rewinds + 1

谢谢。

4

2 回答 2

7

这本书的描述有点偏离。Rewind 和 Rebind 仅适用于循环连接。它们指的是从循环外部到循环内部的探测值的使用,并且仅反映在某些运算符中(成本很高,因此值得知道它们被召回的频率)。Rebinds 和 Rewinds 应该与执行次数直接相关,而不是数字 + 1。

执行次数,估计的或实际的,是调用操作符的次数。这可能会受到很多事情的影响。例如,在循环连接中,您会看到对外部分支中的运算符的多次调用,直接对应于内部分支中的行数。您绝对会看到实际和估计之间的差异。在循环的情况下(很好的例子),您会在内部循环中看到估计值为 1,但如前所述,实际执行次数将等于外部循环中的行数。

于 2011-06-11T16:21:26.943 回答
4

我建议您阅读(和/或下载)Grant Friitchey 的电子书SQL Server 执行计划。下载似乎是免费的。

有一个关于rebindsrewinds的部分。我不是这方面的专家,所以我只引用相应章节的底线:

那么这对 DBA 有什么帮助呢?一般来说,重新绑定和倒带计数尽可能低是理想的,因为较高的计数表示更多的磁盘 I/O。如果计数很高,则可能表明特定操作员的工作量超出其需要,从而损害了服务器性能。如果是这种情况,可能会重写查询或修改当前索引,以使用使用更少重新绑定和回退的不同查询计划,从而减少 I/O 并提高性能。(第 83 页)

执行次数是重新绑定和倒带次数的更高级别指标。这里引用另一个:

请注意,与仅显示 EstimateExecutions 的文本计划不同,XML 计划估计重新绑定和倒带的次数。这通常可以让您更准确地了解查询中发生的情况,例如操作符执行了多少次。(第 103 页)

于 2011-01-14T18:46:32.170 回答