728x90

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

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

힌트 설명
/*+ RULE */ 규칙 기반 접근 방식 사용 지정
/*+ CHOOSE */ 오라클 옵티마이저 디폴트 값에 따름
/*+ INDEX(테이블명 인덱스명) */ 지정된 인덱스를 강제적으로 사용 지정
/*+ USE_HASH(테이블명) */ 지정된 테이블들의 조인이 Hash join이 되게 유도
/*+ USE_MERGE(테이블명) */ 지정된 테이블들의 조인이 Sort Merge 되게 유도
/*+ USE_NL(테이블명) */ 지정된 테이블들의 조인이 Nested Loop 되게 유도

 

728x90
300x250
WONILLISM