我正在尝试了解SQL Server执行计划中的物理运算符。这个页面非常有帮助:
http://technet.microsoft.com/en-us/library/ms191158.aspx
SSMS 2008显示了SSMS 2005中未显示的一些物理运算符属性:Estimated Number of Executions
和Number of Executions
。但这些实际上意味着什么,它们与重新组合和回卷有何关系?
Estimated Number of Executions
特别有趣,因为它似乎没有存储在XML中。那怎么算呢?它似乎等于Estimated Rebinds + Estimated Rewinds + 1.0
。但如果是这种情况,为什么Number of Executions
不等于Actual Rebinds + Actual Rewinds + 1
?
感谢。
答案 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页)