SQL Server -SP путь выполнения хранится в стеке? - PullRequest
1 голос
/ 26 августа 2009

Когда я выполняю хранимую процедуру в первый раз, она (например) занимает 3 минуты. Как только он предварительно скомпилирован, выполнение занимает 1 минуту.

Через 3 месяца (без дальнейшего использования SP), когда я пытаюсь выполнить его снова, это занимает 3 минуты.

Мой вопрос

Хранится ли путь выполнения в стеке? Или это связано с каким-то другим фактором? Поправь меня, если я не прав в понимании.

Ответы [ 4 ]

3 голосов
/ 26 августа 2009

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

это может быть:

  • хранимая процедура использует другой план выполнения
  • ваши индексы фрагментированы
  • статистика устарела, что привело к неверному плану выполнения
  • вам не хватает памяти

попробуйте использовать следующий код перед выполнением хранимой процедуры

SET STATISTICS IO ON

и посмотрите, использует ли ваша процедура физическое чтение или логическое чтение. Если это логично, он использует кеш для получения данных

2 голосов
/ 26 августа 2009

Его можно удалить из кэша по многим причинам. обычно:

  • Давление памяти
  • Статистика и перестройка индекса
  • Перезапуск сервера (конечно)

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

он не скомпилирован в смысле c # или c ++

1 голос
/ 26 августа 2009

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

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

1 голос
/ 26 августа 2009

Согласно http://technet.microsoft.com/en-us/library/ms181055%28SQL.90%29.aspx

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...