반응형

  1. 옵티마이저의 개념
사용자가 실행한 SQL을 해석하고 데이터를 추출하기 위한 실행계획을 수립하는 프로세스
오라클은 RBO(Rule Based Optimizer)와 CBO(Cost Based Optimizer)를 제공하고 나머지 DBMS는 CBO만을 제공함
  1. 옵티마이저의 종류
1) RBO
기본적으로 15개의 순위가 매겨진 규칙이 존재(이를 기초로 해서 실행계획을 수립)
SQL에 대한 실행계획이 하나 이상일 경우 순위가 높은 규칙을 이용한다.
수립될 실행계획이 예측 가능하기 때문에 개발자가 원하는 처리 경로로 유도하기가 쉽다.

2) CBO
 대상 row들을 처리하는데 필요한 자원 사용을 최소화해서, 궁극적으로 데이터를 빨리 처리하는데 목적이 있음.
CBO는 통계정보를 기반으로 비용을 산정하는데 CBO의 성능을 최적의 상태로 유지시키기 위해서 테이블, 인덱스, 클러스터 등을 대상으로통계정보를 생성하는것이 중요하다(ANALYZE 작업)

             ANALYZE 의 예
            

            ANALYZE 실행 여부 확인
            

  1. RBO와 CBO의 실행계획 비교
            

            CBO에서의 실행계획
            

            RBO에서의 실행계획
            

실행계획을 보면 CBO와 RBO가 조인 순서가 다름을 알 수 있다. 이를 트리형태로 나타내보면 다음과 같다.

            

 CBO를 보면 2번의 테이블(DEPT)을 먼저 읽고 4번이 조인형태로 연결이 된다. 하지만 RBO를 보면 3번 테이블(EMP)을 먼저 읽는다. 즉 where절에 있던 테이블을 기준으로 먼저 읽었다.
            
        



반응형

'Database' 카테고리의 다른 글

[프로그래머스 59045] 보호소에서 중성화한 동물  (0) 2020.04.29
[SQL 튜닝] 1. 실행계획(Execution plan)  (2) 2019.04.22
오라클 다중 WHERE조건  (0) 2018.06.25
무결성 (Integrity)  (0) 2018.01.12
JOIN (조인)  (0) 2018.01.12

+ Recent posts