Dynamic sampling

EXEM Knowledge Base

Jump to: navigation, 찾기

목차

[편집] 기본 정보

[편집] Hint 명

DYNAMIC_SAMPLING

[편집] Syntax

/*+ dynamic_sampling(query_block_name level) */

[편집] 지원

9i~

[편집] 상세 설명

Statement 레벨에서 Dynamic Sampling을 수행하도록 지정한다. 다음과 같은 경우에는 dynamic_sampling 힌트를 사용한다.

  • Global Temporary Table 등과 같이 통계 정보를 수집하기 어려운 객체에 대해 임시 통계 정보를 생성하고자 하는 경우
  • 통계 정보는 정상적으로 수집되었지만, 통계 정보의 해석에 오류가 있는 경우에 임시로 통계 정보를 생성하고자 하는 경우. Like 조건을 사용하는 복잡한 Predicate나 Table Pseudo Function을 사용하는 경우 등이 여기에 해당한다.


Dynamic Sampling은 통계 정보가 없거나, 통계 정보만으로는 해석할 수 없는 복잡한 조건(Predicate)을 해석하는데 큰 도움이 된다. 하지만 Dynamic Sampling이 항상 정확한 결과를 내는 것은 아니다. 가령 다음과 같은 경우에는 Dynamic Sampling이 전혀 도움이 되지 않을 수 있다.

  • Query Transformation에 의해 Predicate가 바뀌는 경우: 가령 Or Expansion에 의해 하나의 Query가 두 개의 Query로 분기되는 경우에는 원본 Query에 대한 Dynamic Sampling 결과가 분기된 Query에 대해서는 의미가 없기 때문에 Dynamic Sampling의 효과가 없어진다.
  • Join Predicate: Join Predicate에 의한 Cardinality 계산은 Dynamic Sampling으로 수행되지 않는다.

[편집] 사용 예제

사용 예제는 아래 URL을 참조한다.

[편집] 외부 참조

  1. http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10752/stats.htm#43033