2012년 9월 10일 월요일

Optimizer

Optimizer 란?


Optimizer 란 SQL 을 해석하고 실행계획을 수립 한 후, 이를 통해 데이터를 처리하는 프로세스이다.

Optimizer는 ㅋRBO(Rule Based Optimizer)와 CBO(Cost Based Optimizer) 두 종류가 있다.

자신의 Optimizer가 어떻게 설정되어있는 지 보려면
----------------
SELECT NAME, VALUE, ISDEFAULT, ISMODIFIED, DESCRIPTION
FROM V$PARAMETER
WHERE NAME LIKE '%optimizer_mode%';
----------------

을 실행하며 된다.

RBO - 특정한 규칙에 의해 실행계획을 세운다.
CBO - 통계정보에의해 비용을 계산하여, 작은 비용이 나오는 방향으로 실행계획을 세운다.





Optimizer_mode의 종류


① CHOOSE     - v9i까지의 기본값 
  - 통계정보의 따라 CBO를 이용할지 RBO를 이용할지 선택한다. 통계정보가 전혀 없을때는 RBO를 선택하고, 통계정보가 일부라도 존재할때는 CBO를 선택하게 된다.

② ALL_ROWS   - Cost Base임을 뜻함 (v10g의 기본값) 
  - CBO의 한 종류로 큰 데이터 처리에 적합하다. 

③ FIRST_ROWS - Cost Base임을 뜻함 
  - CBO의 한 종류로 작은 데이터 처리에 적합하다. 

④ RULE       - Rule Base임을 뜻함


*테이블에 통계정보를 생성하기 위해서는 아래명령을 실행시키면 된다.

SQL> ANALYZE TABLE [테이블이름] COMPUTE STATISTICS ;





블로그 보관함