728x90
1. 데이터 조작 프로시저 성능 개선
- 쿼리 성능 개선(튜닝)
DB에서 프로시저에 있는 SQL 실행 계획을 분석, 수정을 통해 최소의 시간으로 원하는 결과를 얻도록 하는 작업 - 쿼리 성능 개선 절차
- 문제 있는 SQL 식별
- 옵티마이저 통계 확인
- SQL문 재구성
- 인덱스 재구성
- 실행계획 유지관리
- 옵티마이저 통계 확인
옵티마이저 : SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는 DBMS 내부의 핵심엔진 - 옵티마이저 유형
- 규칙기반 옵티마이저(RBO)
- 통계 정보가 없는 상태에서 사전 등록된 규칙에 따라 질의 실행 계획을 선택
- 규칙(우선 순위) 기반
- 평가 기준: 인덱스 구조, 연산자, 조건절 형태
- 장점 : 사용자가 원하는 처리경로로 유도하기가 쉬움
- 비용기반 옵티마이저(CBO)
- 통계 정보로부터 모든 접근 경로를 고려한 질의 실행 계획을 선택
- 비용(수행 시간) 기반
- 평가 기준 : 레코드 개수, 블록 개수, 평균 행 길이, 컬럼 값의 수, 컬럼 값 분포, 인덱스 높이, 클러스터링 팩터 등
- 옵티마이저의 이해도가 낮아도 성능보장 가능(기본 설정)
- 규칙기반 옵티마이저(RBO)
- SQL 수행과정 내 옵티마이저 역할
- 비용기반 옵티마이저 기반으로 쿼리 변환, 비용 산정, 계획 생성으로 구분
- 힌트 사용
- SQL 성능 개선의 핵심
- 옵티마이저가 항상 최선의 실행 계획을 수립할 수 없어 명시적인 힌트를 통해 실행 계획 변경
힌트 | 설명 |
/*+ RULE */ | 규칙 기반 접근 방식 사용 지정 |
/*+ CHOOSE */ | 오라클 옵티마이저 디폴트 값에 따름 |
/*+ INDEX(테이블명 인덱스명) */ | 지정된 인덱스를 강제적으로 사용 지정 |
/*+ USE_HASH(테이블명) */ | 지정된 테이블들의 조인이 Hash join이 되게 유도 |
/*+ USE_MERGE(테이블명) */ | 지정된 테이블들의 조인이 Sort Merge 되게 유도 |
/*+ USE_NL(테이블명) */ | 지정된 테이블들의 조인이 Nested Loop 되게 유도 |
728x90
300x250