반응형
- /**********************************************************************************************
-- Title : [2k5] 실행 계획(캐시) 재사용에 영향을 주는 요소
-- Reference : mcpworld.com
-- Key word : 재컴파일 recompile 임계값 threshold 통계 갱신 statistics
**********************************************************************************************/
※ 실행 계획 재사용에 영향을 주는 요소
- 저장 프로시저가 수행되는 데이터베이스
- 트리거 실행 시, 영향 받는 행 수
- INSTEAD OF 트리거 ? 0행, 1행 모두 “1-plan” 공유
- AFTER 트리거 ? 1행 “1-plan”, 0행 or n행 “n-plan” (n>1)
- Bulk Insert문 실행 계획 캐싱 안됨
- 8KB 이상의 일괄 처리 명령은 캐싱 안됨
- SET 옵션
- 테이블의 소유자 지정 여부
- sys.syscacheobjects 의 uid
- CREATE PROCEDURE … WITH RECOMPILE 옵션
- EXEC (프로시저 명) WITH RECOMPILE 옵션
- 데이터 변경으로 인한 통계 갱신 발생
- 임시 테이블 사용시 통계 갱신 발생(핵심)
- 오브젝트의 스키마 변경으로 인한 재컴파일
- 데이터베이스 수준의 변경 작업
- 재컴파일 임계값 (Threshold)
: SQL 2000 ? rowmodctr : sysindexes 테이블에 존재
: SQL 2005 ? colmodctr : 각 테이블에 존재 (확인 불가)
: 일반 테이블(RT : Recompile Threshold)
If n <= 500, RT = 500 (n: 비교 시점에서의 테이블 행 수)
If n > 500, RT = 500 + 0.20 * n
: 임시 테이블
If n < 6, RT = 6
If 6 <= n < 500, RT = 500
If n > 500, RT = 500 + 0.20 * n
: 테이블 변수
RT 존재하지 않음 - 통계 갱신으로 인한 재 컴파일이 발생하지 않음
반응형