본문 바로가기

공부/정보처리기사

[정보처리기사-실기] 데이터 입출력 구현(4)

데이터 조작 프로시저 최적화

1. 데이터 조작 프로시저 성능개선

(1) 옵티마이저(Optimizer)의 개념

SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는 DBMS 내부의 핵심엔진

비교 규칙기반 옵티마이저(RBO) 비용기반 옵티마이저(CBO)
개념 통계 정보가 없는 상태에서 사전 등록된 규칙에 따라
질의 실행 계획을 선택하는 옵티마이저
통계 정보로부터 모든 접근 경로를
고려한 질의실행 계획을 선택하는 옵티마이저
핵심 규칙(우선 순위) 기반 비용(수행 시간) 기반
평가 기준 인덱스 구조, 연산자, 조건절 형태 등 레코드 개수, 블록 개수, 평균 행 길이 등
장점 사용자가 원하는 처리경로로 유도하기가 쉬움 옵티마이저의 이해도가 낮아도 성능보장 가능

(2) 옵티마이저(Optimizer) 역할

비용기반 옵티마이저 기반으로 쿼리 변환 / 비용 산정 / 계획 생성 으로 구분

 

(3) 힌트 사용

옵티마이저의 실행 계획을 원하는 대로 변경할 수 있게 한다.

SELECT /*+ RULE */ ENAME, SAL
  FROM EMP
 WHERE EMPNO > 9000;
 /*
 비용기반 옵티마이저에서 규칙기반 옵티마이저 모드로 변경 수행
 */
힌트 설명
/*+ RULE */ 규칙 기반 접근 방식을 사용하도록 지정
/*+ CHOOSE */ 오라클 옵티마이저 디폴트 값에 따름
/*+ INDEX(테이블명 인덱스명 */ 지정된 인덱스를 강제적으로 사용하도록 지정
/*+ USE_HASH(테이블명) */ 지정된 테이블들의 조인이 Hash Join 형식으로 일어나도록 유도
/*+ USE_MERGE(테이블명) */ 지정된 테이블들의 조인이 Sort Merge 형식으로 일어나도록 유도
/*+ USE_NL(테이블명) */ 지정된 테이블들의 조인이 Nested Loop 형식으로 일어나도록 유도