'hint'에 해당되는 글 1건

  1. 2006.08.31 [Oracle - Hint] Optimizer Mode Setting 방법 by pino93

Optimizer Mode Setting 방법

--------------------------
1. Instance 수준의 셋팅 방법
--------------------------
- DB의 설정 파일(initSID.ora or spfileSID.ora)에 전체적으로 적용이 되도록 정의하는 방법이며 다음과 같이 기술하며 OPTIMIZER MODE는REUL, CHOOSE, ALL_ROOWS, FIRST_ROWS와 같은 종류가 있습니다.CHOOSE인 경우 한테이블이라도 Analyzed되어 있는 경우엔 비용기반 접근 방식을 이용하는 것이며RULE인 경우 규칙기반 접근 방식을 사용,ALL_ROWS인 경우 비용기반 옵티마이저의 한방법이며 모든 ROW들을 처리한다고 할 때 그 비용을 최소화 하는 방법으로 실행계획을 수립하며,  FIRST_ROWS인 경우엔 최초 ROW를 추출하는데 드는 비용을 최소화 하도록 실행 계획을 구성하는 것입니다.

- 예) OPTIMIZER_MODE=FIRST_ROWS

- 만약 initSID or spfileSID.ora에 아무 내용도 정의하지 않은 경우 기본적으로 CHOOSE 방식이 됩니다.

-------------------------
2. Session 수준의 셋팅 방법
-------------------------

- alter session이라는 명령을 이용하면 현재 접속된 세션 레벨에서 옵티마이저 모드를 정의할 수 있습니다.

- 예) alter session set optimizer_goal=rule 앞과 같이 정의하면 해당 세션이 끝나기 전까지는 규칙 기반(,RULE-BASED) 옵티마이저 모드를 이용하게 됩니다.

--------------------------
3. Statement 수준의 셋팅 방법
--------------------------

- 힌트(Hint) 구문을 이용한다면 매 SQL 문장마다 서로 다른 옵티마이저 모드를 적용할 수 있습니다.

- 예) SELECT /*+ FIRST_ROWS */
            ENAME,
            SAL,
            JOB
        FROM EMP
        WHERE SAL > (SELECT MAX(SAL)
                                  FROM  EMP
                                  WHERE DEPTNO = 10)


- oraclejava -

Posted by pino93