Физические операторы в планах выполнения SQL Server: что такое rebinds, rewinds и количество выполнений?
Я пытаюсь понять физические операторы в планах выполнения 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
?
спасибо.
2 ответов
книга немного не в том описании. Rewind и Rebind применимы только в пределах соединения цикла. Они относятся к использованию значений зонда из внешней части цикла во внутреннюю часть цикла и отражаются только в определенных операторах (которые являются дорогостоящими, поэтому стоит знать, как часто они вспоминаются). Rebinds и Rewinds должны коррелировать непосредственно с количеством исполнений, а не с числом + 1.
количество казней, оценочных или фактических, количество раз, когда вызывается оператор. На это может повлиять многое. Например, в соединении цикла вы увидите несколько вызовов операторов во внешней ветви, соответствующих непосредственно количеству строк во внутренней ветви. Вы будете абсолютно видеть различия между фактическим и оценочным. В случае цикла (отличный пример для бит) вы увидите оценочное значение одного во внутреннем цикле, но фактическое количество выполнений будет, как уже говорилось, равно количество строк во внешней части.
Я рекомендую вам прочитать (и / или загрузить) электронную книгу планы выполнения SQL Server Гранта Fritchey. Скачать кажется бесплатно.
есть раздел о rebinds и перематывает. Я не эксперт в этом, поэтому я просто цитирую нижнюю строку соответствующей главы:
Итак, как это полезно для DBA? Вообще говоря, идеально если отсчеты rebind и rewind как можно ниже, как выше пунктам указать больше дискового ввода/О. Если показатели высокие, то это может означать, что определенный оператор работает более крепко чем ему нужно, ушибая сервер спектакль. Если это так, то возможно переписать запрос или изменение текущего индексирования для использования другого плана запроса, который использует меньше rebinds и rewinds, уменьшая I/O и форсируя представление. (p. 83)
на число казней индикатор более высокого уровня для номера на привязывает и перематывает. Вот еще одна цитата:
обратите внимание, что, в отличие от текстовых планов, которые только что отображали EstimateExecutions, XML-план расчетное количество перемотки и перемотки. Это может часто давать вам более точное представление о том, что произошло в запросе, например, как много раз оператор был казнен. (p. 103)