Различия между оценочными и фактическими планами выполнения


8

Я новичок в SQL Server и хочу настроить свой первый запрос.

В SQL Server 20xx, в чем разница между «отображать примерный план выполнения» и «включать фактический план выполнения»?

Ответы:


6

Оценивается выполнение плана генерируется исключительно на основе статистических данных, SQL Server имеет - без фактического выполнения запроса. Оптимизатору запросов просто задают вопрос, что он, скорее всего, будет делать с этим запросом, основываясь на всей информации, которая имеется в запросе, распределениях данных и т. Д.

Это работает нормально, запрос не должен выполняться (что может занять много времени), но если статистика устарела, план может быть сильно искажен.

Фактический план выполнения только что : - фактическое выполнение плана , который был использован при фактическом выполнении запроса. Это покажет вам вещи, которые могут указывать на «устаревшую» статистику и т. Д. Но чтобы получить это, вы должны выполнить запрос - что может занять много времени.


1
Я бы подумал, что единственный реальный вопрос здесь - в каких случаях фактический план не является оценочным. Остальное очевидно, не правда ли?
Джон

один быстрый вопрос после прохождения через оптимизатор запросов и при выполнении запроса, если кэшированный план устарел, будет ли шаг оптимизации запроса повторно выполнять обновление статистики? или есть другой способ создать план выполнения?
brykneval

1

Предполагаемый план предоставит вам, как ваш запрос будет выполняться на сервере, фактически не выполняя его. Это даст вам представление о том, нужно ли вам настраиваться, чтобы создать лучший план, или примерный план выглядит хорошо.

Фактический план показывает, что на самом деле произошло, когда сервер выполнил запрос. Он включает в себя такие детали, как фактическое количество строк в таблице, сколько памяти он использовал, если была сортировка. Какую степень параллелизма он использовал во время выполнения.

Но лучше всего было бы взглянуть на разницу между «предполагаемым количеством строк» ​​и «фактическим количеством строк», которое вы можете увидеть в фактическом плане exec. Ближе эти два значения означают, что статистика актуальна, и для данной статистики это лучший план. Но если эти значения имеют много различий, то может быть возможно, что статистика не актуальна, и, следовательно, это не может быть лучший план. В этом случае обновление статистики поможет в создании более точного плана и, следовательно, фактического плана.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.