Кэш процедур SQL Server - PullRequest
       5

Кэш процедур SQL Server

3 голосов
/ 08 ноября 2010

Если вы запускаете несколько БД на одном и том же SQL Server, все ли они борются за кэш процедур? Я пытаюсь понять, как SQL Server определяет, как долго удерживать кэш процедур? Если другие БД потребляют память, это повлияет на кеш процедур для данной БД на том же сервере?

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

Ответы [ 2 ]

4 голосов
/ 08 ноября 2010

Кэширование / компиляция происходит от начала до конца

  • IIS будет выгружен через 20 минут после неиспользования по умолчанию.
  • .net компиляция в CLR
  • Компиляция SQL
  • загрузка данных в память

Вот почему начальные вызовы занимают некоторое время

Обычно содержимое остается в кеше:

  • пока еще используется
  • нет давления памяти
  • все еще действителен (например, обновления статистики аннулируют кэшированные планы)

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

4 голосов
/ 08 ноября 2010

Из документации :

Планы выполнения остаются в кэше процедур, пока достаточно памяти для их хранения. Когда существует нехватка памяти, компонент Database Engine использует основанный на стоимости подход, чтобы определить, какие планы выполнения удалить из кэша процедур. Чтобы принять решение на основе стоимости, компонент Database Engine увеличивает и уменьшает текущую переменную стоимости для каждого плана выполнения в соответствии со следующими факторами.

Вам также может быть интересна эта ссылка: Самая исполняемая хранимая процедура?

...