간단명료

옵티마이저 본문

SQL/업무에 바로 쓰는 SQL튜닝 입문

옵티마이저

FeelGoood 2022. 3. 26. 12:05

사용자가 실행한 SQL을 해석하고, 데이터를 추출하기 위한 실행계획을 수립하는 프로세스.

RBO(Rule Based Optimaizer)

15개의 순위가 매겨진 규칙 존재하며, 부여되는 순위에 따라 수행 됨.
오라클의 초창기 버전부터 제공 됨.

1. Rowid에 의한 1 row
2. 클러스터 조인에 의한 1 row
3. Unique나 Primary Key를 사용한 해시 클러스터 키에 의한 1 row
4. Unique나 Primary Key에 의한 1 row
5. 클러스터 조인
6. 해시 클러스터 키
7. 클러스터 키
8. 결합 칼럼 인덱스
9. 단일 컬럼 인덱스
10. 인덱스에 의한 유한 영역 검색
11. 인덱스에 의한 무한 영역 검색
12. 소트 머지 조인
13. 인덱스로 구성된 칼럼의 최대 또는 최소
14. 인덱스로 구성된 컬럼으로 ORDER BY
15. 인덱스 없이 전체 테이블 스캔

CBO(Cost Based Optimizer)

필요한 자원 사용을 최소화해서 데이터를 빨리 처리하는데 목적이 있음.
10g부터 기본적인 설정으로 적용 됨.(오라클을 제외한 DBMS는 CBO만 제공)

  • 통계정보
    • CBO의 성능을 최적의 상태로 유지시키기 위해 테이블, 인덱스, 클러스터 등을 대상으로 통계 정보를 생성함
      • 정기적으로 ANALYZE 작업을 하는 것이 가장 중요함
    • 가장 효율적인 실행계획을 수립하기 위해 최소비용을 계산할 때 중요하게 사용 됨.

1. Instance Level(데이터베이스 전체에 지정) : initSID.ora를 이용해서 지정함

OPTIMIZER_MODS = [RULE/CHOOSSE/FIRST_ROWS/ALL_ROWS]
-- 9i 까지는 CHOOSE 가 기본, 10g부턴 ALL_ROWS 가 기본

2. Session Level(작업하는 세션별로 지정)

ALTER SESSION SET OPTIMIZER_MODE = [RULE/CHOOSSE/FIRST_ROWS/ALL_ROWS]

3. Statement Level(SQL문에 HINT사용하여 각 SQL별로 지정) -우선순위가 가장 높다

SELECT /*+ first_rows */ ename
FROM emp;

​                                      

출처 : EZ Learning - [업무에 바로 쓰는 SQL튜닝 입문] 강의
728x90
반응형
Comments