SQL Server执行计划中的物理运算符:什么是重新绑定,倒带和执行次数?

时间:2010-03-31 22:53:18

标签: sql-server sql-server-2008 sql-execution-plan

我正在尝试了解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

感谢。

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:4)

我建议您阅读(和/或下载)Grant Fritchey的电子书SQL Server Execution Plans。下载似乎是免费的。

有一节关于重新绑定倒带。我不是这方面的专家,所以我只想引用相应章节的底线:

  

那么这对DBA有什么帮助?一般来说,它是理想的   重新计数和倒带计数尽可能低,因为计数越高   表示更多磁盘I / O.如果计数很高,则可能表示a   特别是运营商正在努力工作,这会伤害服务器   性能。如果是这种情况,则可以重写   查询或修改当前索引,以使用使用的其他查询计划   更少的重新开始和倒退,减少I / O并提高性能。 (第83页)

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

  

请注意,与仅显示EstimateExecutions的文本计划不同,XML计划了   估计重新开始和重新开始的数量。这通常可以给你一个   更准确地了解查询中发生的事情,例如如何   很多次操作员被处决了。 (第103页)