반응형

실행 계획을 작성하는 작업은 CPU를 많이 사용하는 작업이기 때문에 새로운 실행 계획을 작성함으로써 얻어지는 이득이 실행 계획 작성에 드는 CPU 비용보다 크다면 재컴파일이 좋지만 그렇지 않은 불필요한 재컴파일은 가능한 한 제거하는 것이 좋습니다. 재컴파일이 발생하면 컴파일된 계획에 잠금을 걸기 때문에 동시성이 저하되므로 성능에 좋지 않은 영향을 미칠 수 있습니다.

실제로 운영 시스템을 모니터링하다 보면 사용자는 알지 못한 채 불필요한 재컴파일이 발생하는 경우가 흔히 있습니다. 그러므로 프로파일러 또는 추적 수집 SP를 사용하여 재컴파일에 대한 모니터링을 수행할 것을 권고합니다.

재컴파일을 모니터링하고자 하는 경우에는 EventSubClass 열을 수집해야 합니다.

다음은 EventSubClas 열의 값에 대한 설명입니다.

EventSubClass

설명

1

스키마 변경으로 인한 재컴파일

2

통계 변경으로 인한 재컴파일

3

지연된 컴파일로 인한 재컴파일

4

SET 옵션 변경으로 인한 재컴파일

5

임시 테이블 변경으로 인한 재컴파일

6

원격 행집합 변경으로 인한 재컴파일

7

FOR BROWSE 권한 변경으로 인한 재컴파일

8

쿼리 통지 환경 변경으로 인한 재컴파일

9

분할된 뷰 변경으로 인한 재컴파일

10

커서 옵션 변경으로 인한 재컴파일

11

OPTION (RECOMPILE) 요청으로 인한 재컴파일




참고로 재컴파일은 주로 다음과 같은 이유로 발생합니다.
- 변경된 행 임계값 (rowmodctr)
- DDL 문
- 스키마 변경
- 임시 테이블 사용
- SET 옵션 사용
   - ANSI_PADDING
   - FORCEPLAN
   - CONCAT_NULL_YIELDS_NULL
   - ANSI_WARNINGS
   - ANSI_NULLS
   - QUOTED_IDENTIFIER
   - ANSI_NULL_DFLT_ON
   - ANSI_NULL_DFLT_OFF

반응형

+ Recent posts