데이터 조작 프로시저 최적화
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 형식으로 일어나도록 유도 |
'공부 > 정보처리기사' 카테고리의 다른 글
[정보처리기사-실기] 통합구현(2) (0) | 2020.09.10 |
---|---|
[정보처리기사-실기] 통합구현(1) (0) | 2020.09.10 |
[정보처리기사-실기] 데이터 입출력 구현(3) (0) | 2020.09.09 |
[정보처리기사-실기] 데이터 입출력 구현(2) (0) | 2020.09.09 |
[정보처리기사-실기] 데이터 입출력 구현(1) (0) | 2020.09.09 |