INF: KEEPFIXED PLAN을 사용하여 저장 프로시저 재컴파일을 해제하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 276220 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR276220
모두 확대 | 모두 축소

요약

저장 프로시저를 재컴파일할 때 특정한 경우에는 재컴파일을 통해 얻는 이익보다 재컴파일에 드는 비용이 더 클 수 있습니다. 현재 SQL Server 버전은 문 수준의 재컴파일을 지원하지 않기 때문에 재컴파일이 필요할 때 전체 저장 프로시저를 재컴파일해야 하므로 이 점을 신중하게 고려해야 합니다. 따라서 저장 프로시저가 실행되는 동안 트리거되는 재컴파일 수와 저장 프로시저의 길이 때문에 저장 프로시저가 실행되는 전체 기간이 늘어날 수 있습니다.

SQL Server 7.0의 서비스 팩 3부터는 새로운 쿼리 힌트인 KEEPFIXED PLAN이 도입되어 기존 계획을 사용하는 것보다 재컴파일하는 데 더 많은 비용이 드는 특수한 상황을 줄일 수 있습니다.

KEEPFIXED PLAN 쿼리 힌트는 쿼리 최적기가 통계 또는 인덱싱된 열 변경(예: 업데이트, 삭제 또는 삽입)으로 인해 쿼리를 재컴파일하지 못하도록 합니다.
저장 프로시저 재컴파일 문제 해결에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
243586 INF: 저장 프로시저(Stored Procedure) 재컴파일 문제 해결 방법

추가 정보

아래 예제 코드는 Microsoft 기술 자료의 다음 문서에 있습니다.
243586 INF: 저장 프로시저(Stored Procedure) 재컴파일 문제 해결 방법
   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 7.0 서비스 팩 3 이전에서는 사용할 수 없습니다.

속성

기술 자료: 276220 - 마지막 검토: 2006년 7월 19일 수요일 - 수정: 4.1
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
키워드:?
kbinfo KB276220

피드백 보내기

 

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