오라클 튜닝(Optimizer)

1. Optimizer 이란?
  SQL의 실행계획을 수립하고, 실행계획(execute plan)을 생성해내는 것

2. Optimizer 2종류
  가. Rule-Based Optimization(RBO) : 규칙기반
    – 미리 정해진 규칙에 따라 실행계획 수립
    – 융통성이 없음
    – 9i에서 기본값으로 사용
  나. Cost-Based Optimization(CBO) : 비용기반
    – 실행비용의 예측을 통한 지능적인 실행계획 수립, Dictionary 이용
    – Dictionary 정보에 따라 지능적인 판단수립
    – Dictionary 정보에 크게 의존하므로 Dictionary 관리가 매우중요

3. Optimizer hint
  명령문 레벨에서 사용하는 파라미터

  가. /*+ ALL_ROWS */ : 전체 처리율의 최적화
  나. /*+ FIRST_ROWS[(n)] */ : 처음 결과가 나올 때까지의 시간을 줄이기 위해 최적화
                               n = 임의의 자연수


4. RBO에서의 Optimizer의 실행계획 조정

  가. From 절에서 테이블 순서 변경(가장 오른쪽 있는 테이블 부터 수행한다)
  나. Where 절에서 컬럼 순서 변경
  다. 인덱스의 생성 및 삭제
  라. 기타 문법 트릭의 사용
      예) ename에 인덱스가 있지만 optimizer가 사용하지 않게 하기 위해서는
          where ename = ‘test’  ->  where substr(ename, 1, 4) = ‘test’
      로 수정한다.


5. CBO에서의 Optimizer의 실행계획 조정

  가. Dictionary 통계를 정기적으로 갱신한다.
  나. Hint를 사용하여 쿼리를 작성한다.
  다. 파라미터를 설정한다.(OPTIMIZER_MODE, DB_FILE_MULTIBLOCK_READ_COUNT 등)

참고 : Hint의 문법

/*+  힌트  */

예) update /*+ index(e employees_job_idx) */
      employees e
      set e.salary =
     (select /*+ index(m employees_salary_idx) */
       (e.salary + m.salary) /2
         from employees m  …………
           …….

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다