작성일 : 12-05-31 21:53
|
[MsSQL] Recompile [4가지 방법]
|
|
|
글쓴이 :
조형래
 조회 : 4,566
|
1. create(alter) proc [프로시저명]
with recompile
as
.....
go
[해당 프로시져 실행시마다 무조건 recompile 됨]
2. exec [프로시저명] with recompile;
[1, 2의 경우 캐쉬에 저장하지 않는다]
3. sp_recompile '[프로시저명 or 사용자정의 함수 or 뷰]'
[3의 경우 관련 개체를 캐쉬에서 지운 후, 관련 개체를 참조하는 개체를 리컴파일 한다]
4. sp_recompile '테이블명'
[관련 개체를 참조하는 개체를 리컴파일 한다]
-----------------------------------------
저장 프로시저 다시 컴파일
인덱스를 추가하거나 인덱스된 열의 데이터를 변경하는 등의 작업을 수행하면 데이터가 변경되기 때문에, 데이터베이스 테이블에 액세스할 때 사용한 원래 쿼리 계획을 다시 컴파일하여 최적화해야 합니다. Microsoft® SQL Server™ 2000이 다시 시작한 다음 저장 프로시저를 맨 처음 실행할 때 최적화가 자동으로 수행됩니다. 저장 프로시저에서 사용하는 원본 테이블이 변경될 때도 최적화가 자동으로 수행됩니다. 그러나 저장 프로시저의 성능을 높이기 위해 새 인덱스를 추가했을 경우에는 SQL Server를 다시 시작하고 저장 프로시저를 실행하기 전까지는 최적화가 자동으로 수행되지 않습니다.
SQL Server는 저장 프로시저를 다시 컴파일할 수 있는 다음의 세 방법을 제공합니다.
1. sp_recompile 시스템 저장 프로시저는 저장 프로시저가 다음에 실행될 때 다시 저장 프로시저를 컴파일합니다.
2. 저장 프로시저 정의에 WITH RECOMPILE 옵션을 지정하여 저장 프로시저를 만들면 SQL Server가 이 저장 프로시저의 계획을 캐시하지 않습니다. 이 저장 프로시저는 실행될 때마다 다시 컴파일됩니다. 저장 프로시저를 실행할 때마다 값이 많이 다른 매개 변수를 사용하기 때문에 다른 실행 계획이 만들어질 때 WITH RECOMPILE 옵션을 사용하십시오. 이 옵션은 일반적으로 사용되지 않으며, 저장 프로시저가 실행될 때마다 다시 컴파일되기 때문에 실행 속도가 느려집니다.
3. 저장 프로시저를 실행할 때 WITH RECOMPILE을 지정하면 저장 프로시저를 다시 컴파일할 수 있습니다. 제공하는 매개 변수가 불규칙하거나 저장 프로시저를 만든 다음 데이터가 많이 변경되었을 때 이 옵션을 사용하십시오.
[참고] 저장 프로시저가 참조하는 개체가 삭제되거나 이름이 바뀌면 저장 프로시저가 실행될 때 오류가 반환됩니다. 그러나 저장 프로시저에서 참조하는 개체가 같은 이름의 개체로 바뀌면 저장 프로시저를 다시 컴파일하지 않고 실행할 수 있습니다.
|
|