Optimizer
왜 우리는 CBO의 작동원리를 알아야하는가?
optimizer가 아주 잘못된 실행계획을 생성하여 어떤 문제가 발생했을 때, 그 문제를 제대로 파악하고 올바른 해결책을 제시하기 위함이다!!
CBO의 근본동작을 교정하면 한 번의 조치로 문제가 발생하는 모든 경우를 해결 할 수 있다.
-- Jonathan Lowis【Cost-Based Oracle Fundamentals】
왜 optimizer에 대해서 알아야 할까?
CBO 작동의 핵심 기능인 optimizer를 알아야 문제를 파악하고 해결책을 제시할 수 있다!!
-- 내 생각~~^^*
What's the Optimizer?
- 최소비용, 최적의 경로를 선택해서 사용자가 원하는 작업을 가장 효율적으로 수행할 수 있는 프로시저를 자동으로 생성해는 DBMS의 핵심 기능
- 목표 : 가장 효율적인 Execution Plan을 찾아내는 일
- 한계
- Computing power의 부족
- Optimizing algorithm의 한계
- 제한된 시간 내에 방법 결정
- User data에 대한 이해 부족
- 실행방법을 결정하는데 있어서 오판이 많음
- 실행계획(Execution Plan) : 옵티마이저에 의해 생성된 처리절차를 사용자가 확인할 수 있도록 트리구조로 표현한 것
- 사람이 SQL 실행 ⇒ 옵티마이저가 결과를 얻기 위해 실행계획 및 프로시저(프로그래밍) 생성 ⇒ 사용자가 원하는 결과
- 예제
최적화 수행 단계
- 실행계획 후보군 선별
- 실행계획의 예상비용 산정 : data dictionary에 미리 수집해 놓은 object 통계 및 시스템 통계정보 이용
- 최소비용의 실행계획 선정
참고 문서