Optimizer

왜 우리는 CBO의 작동원리를 알아야하는가?

optimizer가 아주 잘못된 실행계획을 생성하여 어떤 문제가 발생했을 때, 그 문제를 제대로 파악하고 올바른 해결책을 제시하기 위함이다!!
CBO의 근본동작을 교정하면 한 번의 조치로 문제가 발생하는 모든 경우를 해결 할 수 있다.
          -- Jonathan Lowis【Cost-Based Oracle Fundamentals】

왜 optimizer에 대해서 알아야 할까?
CBO 작동의 핵심 기능인 optimizer를 알아야 문제를 파악하고 해결책을 제시할 수 있다!!
          -- 내 생각~~^^*

What's the Optimizer?

  • 최소비용, 최적의 경로를 선택해서 사용자가 원하는 작업을 가장 효율적으로 수행할 수 있는 프로시저를 자동으로 생성해는 DBMS의 핵심 기능
  • 목표 : 가장 효율적인 Execution Plan을 찾아내는 일
  • 한계
    1. Computing power의 부족
    2. Optimizing algorithm의 한계
    3. 제한된 시간 내에 방법 결정
    4. User data에 대한 이해 부족
    5. 실행방법을 결정하는데 있어서 오판이 많음
  • 실행계획(Execution Plan) : 옵티마이저에 의해 생성된 처리절차를 사용자가 확인할 수 있도록 트리구조로 표현한 것
  • 사람이 SQL 실행 ⇒ 옵티마이저가 결과를 얻기 위해 실행계획 및 프로시저(프로그래밍) 생성 ⇒ 사용자가 원하는 결과
  • 예제



최적화 수행 단계

  1. 실행계획 후보군 선별
  2. 실행계획의 예상비용 산정 : data dictionary에 미리 수집해 놓은 object 통계 및 시스템 통계정보 이용
  3. 최소비용의 실행계획 선정

참고 문서