Использование ПЛАНА KEEPFIXED отключение перекомпиляции хранимых процедур

Переводы статьи Переводы статьи
Код статьи: 276220 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

В некоторых ситуациях, где перекомпиляции хранимых процедур стоимость повторной компиляции может перевесить преимущества, производный от этого. Обратите внимание на то, что потому, что служба SQL Server с пакетом обновления 2 (SP2) и более ранних версий не поддерживают перекомпиляции уровня инструкций, всю хранимую процедуру должны быть перекомпилированы при срабатывании перекомпиляции. Таким образом число повторных компиляций, которые запускаются во время выполнения хранимой процедуры и длина хранимой процедуры иногда может увеличить общую продолжительность выполнения хранимой процедуры.

Начиная с SQL Server 7.0 SP3, создать подсказку запроса KEEPFIXED ПЛАН, была введена в тех случаях, когда стоимость повторной компиляции больше, чем затраты на использование существующего плана.

В KEEPFIXED ПЛАН подсказка в запросе заставляет оптимизатор запросов не перекомпилировать запрос из-за изменения статистики или изменения индексированных столбцов (например, update, delete или insert). Для получения дополнительных сведений об устранении неполадок перекомпиляции хранимых процедур щелкните следующий номер статьи базы знаний Майкрософт:
243586INF: Устранение неполадок перекомпиляции хранимых процедур

Пример кода, использующего ПЛАН KEEPFIXED подсказки

Пример кода в этом разделе приведен в следующей статье базы знаний Майкрософт:
243586 INF: Устранение неполадок перекомпиляции хранимых процедур
   drop procedure RowModifications 
   go
   create procedure RowModifications as
   -- assume SomeTable exists with the same definition as #t, 
   -- and has over 1000 rows
   create table  #t (a int )
   select * from  #t
   insert  #t select * from retest
   select count(*) from #t  where a = 37
   --option (keepfixed plan)
   go
   exec RowModifications
   go
   exec RowModifications
   go 
 
				
Для второго исполнения RowModifications процедуры, следующий код вызывает перекомпиляцию.
  select count(*) from #t where a = 37
				
Если используется этот код:
Option (keepfixed plan)
				
В этом запросе запроса не вызывает повторную компиляцию снова:
select count(*) from #t  where a = 37 option (keepfixed plan) 
				
Примечание Эта подсказка в запросе применяется на уровне инструкций и не влияет на область всю хранимую процедуру. Если этот параметр, чтобы повлиять на нескольких инструкций в хранимой процедуре, каждый оператор должен реализовывать подсказку, SQL Server применяет для поведения. Эта подсказка не поддерживается для SQL Server 7.0 с пакетом обновления 2 (SP2) или более ранней версии.

Свойства

Код статьи: 276220 - Последний отзыв: 5 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
Ключевые слова: 
kbhowtomaster kbinfo kbmt KB276220 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:276220

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com