2015-10-15 4 views
0

(как разработчик .Net, а не администратор базы данных).Когда хранится кеш-память хранимой процедуры SQL Server?

Я читал много мест, в которых SQL кэширует хранимые процедуры или точнее кэширует план выполнения (по плану выполнения я предполагаю, что это предварительно скомпилированная версия SP).

Когда заменяется план выполнения SP?

например. Я вызываю и SP с определенным параметром. Я изменяю код SP. Снова я вызываю SP с определенным параметром.

Является ли новый SP кэшированным при первом вызове? Если я изменяю значение параметра, используется используемый план выполнения кэширования?

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

+7

* «Пожалуйста, не дайте мне ссылку на другую статью SQL, написанную для администраторов баз данных» * - если вы хотите узнать, как что-то работает, то, как и все остальное, вам нужно прочитать [docs] (https://technet.microsoft.com/en-us/library/ms181055(v=sql.90).aspx). – James

ответ

1

Кэш плана создается каждый раз, когда его не существует. Это означает, что при первом создании и запуске SP будет создан кеш.

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

Вы можете заставить план из SP, чтобы получить регенерировать путем запуска:

EXEC sp_recompile PROCEDURENAME 

Вся эта информация (и многое другое) можно найти здесь: Kimberly Tripp discusses cached plans.

Смежные вопросы