행위

오라클 adaptive query

DB CAFE

thumb_up 추천메뉴 바로가기


적응형 쿼리 최적화

1. 정의 Adaptive query optimization은쿼리수행중추가적인정보들을수집하고이활용하여조금더나은실행계획을만드는기능. 이는특별히존재하는통계정보가최상의실행계획을생성하는데불충분할때에유용하다. Adaptive query optimization은아래의두개로주요구성요소로구성된다. (1) 적응 계획 (2) 적응 통계

2. 설정 해당기능은OPTIMIZER_ADAPTIVE_FEATURES = TRUE 가기본값으로설정되어 있다. 사용하지않으려면OPTIMIZER_ADAPTIVE_FEATURES = FALSE로설정(ALTER SYSTEM, ALTER SESSION, INIT PARAMETER)

3. 기타 (1) 적응 계획 ADAPTIVE PLAN의흔히SQL 실행중다른조인방법을사용한서브플랜을만드는기능.

  예를들어NL LOOP 조인의플랜은더나은성능을보이는HASH 조인로변환되기도한다.
  해당기능은_OPTIMIZER_ADAPTIVE_PLANS = FALSE 로DISABLE 가능하다.( 12C 기본값은TRUE)
  또한/*+ NO_ADAPTIVE_PLAN */ /*+ ADAPTIVE_PLAN */ HINT를통해ENABLE, DISABLE 가능하다.

(2) 적응 통계 - 자동 시냅스 통계(동식 샘플링) SQL문컴파일중통계정보가불확실한경우OPTIMIZER가최적의플랜을생성하기위해DYNAMIC SAMPLING을수행하는.

   기본값은2이고,

OPTIMIZER_ADAPTIVE_FEATURES=TRUE 인경우, OPTIMIZER_DYNAMIC_SAMPLING=2 인경우ADS 발생할수있음. OPTIMIZER_ADAPTIVE_FEATURES=FALSE 인경우, OPTIMIZER_DYNAMIC_SAMPLING=2 인경우ADS 발생하지않음. - 자동 재조정 - SQL PLAN DIRECTIVES(더최적화된쿼리플랜을만들수있도록OPTIMIZER를위한추가정보) (3) 성능문제발생의원인되기도함. OPTIMIZER_ADAPTIVE_FEATURES=TRUE 경우쿼리수행시과도한ADS 발생으로쿼리수행시간이길어지는현상이있음.

OPTIMIZER_DYNAMIC_SAMPLING 매개 변수는 옵티마이저가 수행한 샘플링 수준을 제어합니다. 단순화된 형태로, 레벨은 다음과 같은 효과가 있다: 레벨 0: 동적 샘플링을 비활성화합니다. 레벨 1: 특정 기준을 충족하는 분석되지 않은 모든 테이블을 샘플링하세요. 레벨 2: 분석되지 않은 모든 테이블에 동적 샘플링을 적용하세요. (기본값은 10g부터) 레벨 3: 레벨 2에 따라, 표준 선택성 추정치가 잠재적인 동적 샘플링 술어인 일부 술어에 대한 추측을 사용한 모든 테이블. 레벨 4: 레벨 3에 따라, 복잡한 술어 표현식이 있는 모든 테이블(예: 2개 이상의 열을 참조하는 단일 테이블 술어 또는 두 개의 상관된 열에 절이 있는 비평등). 레벨 5-9: 매번 더 큰 샘플 크기로 레벨 4에 따라. 레벨 10: 모든 블록을 샘플링하는 모든 문에 동적 샘플링을 사용하세요 레벨 11: (11gR2 11.2.0.4 이상) 옵티마이저는 동적 통계가 유용한지, 그리고 SQL 문에 어떤 동적 샘플링 레벨이 사용될지 자동으로 결정합니다.