![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Компиляция происходит при первом вызове хранимой процедуры. При последующих вызовах хранимой процедуры SQL Server пользуется планом выполнения, который содержится в процедурном кэше. Это позволяет значительно повысить быстродействие системы, поскольку при этом экономится время, затрачиваемое на осуществление компиляции. Однако процедурный кэш не является безразмерным, на его поддержание уходит значительная часть оперативной памяти сервера. Поэтому рекомендуется размещать в нем планы выполнения только наиболее интенсивно используемых хранимых процедур. Можно предписать системе не осуществлять кэширование плана выполнения тех хранимых процедур, что вызываются от случая к случаю. В этом случае повторная компиляция процедуры будет производиться при каждом ее вызове. С другой стороны, перекомпилировать хранимую процедуру при каждом ее вызове зачастую бывает выгодно, поскольку при этом создается новый план, который в большей степени учитывает интенсивное изменение статистических данных. Чтобы сделать это возможным, при определении хранимой процедуры воспользуйтесь ключевым словом RECOMPILE.
СОВЕТ:
При компиляции хранимой процедуры оптимизатор запросов использует статистические данные. Поэтому, во-первых, позаботьтесь о том, чтобы эти данные обновлялись регулярно. Во-вторых, если вы имеете дело с быстро растущей таблицей, время от времени выполняйте перекомпиляцию хранимой процедуры.
Можно спровоцировать принудительную перекомпиляцию хранимой процедуры с именем procedure, воспользовавшись следующей хранимой процедурой:
sp_recompile [@objname =] 'procedure'. В результате при следующем вызове указанной хранимой процедуры оптимизатором запросов будет произведена перекомпиляция ее кода.
Дата публикования: 2014-11-28; Прочитано: 257 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!