제 1절 옵티마이저와 실행계획

suyeon-jung·2021년 11월 14일
0

SQLD

목록 보기
17/19

1. 옵티마이저

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

최적의 실행 방법을 실행꼐획(Execution Plan)이라고 한다.

1.1 옵티마이저 유형

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

1.1.1 규칙기반 옵티마이저

  • 인덱스를 이용한 액세스 방식이 전체 테이블 액세스 방식보다 우선수위가 높다.
  • 조인 순서를 결정할 때 조인 컬럼의 인덱스 존재 유무가 중요한 판단의 기준이 된다.
    • 조인 컬럼에 대한 인덱스가 양쪽에 존재 : 우선순위가 높은 테이블이 선행 테이블
    • 한쪽에만 인덱스 존재 : 인덱스가 없는 테이블이 선행 테이블
    • 모두 인덱스 존재 안함 : FROM 절 뒤에 나열된 테이블이 선행 테이블
    • 우선순위가 동일 : FROM 절에 나열된 테이블의 역순으로 선행 테이블 선택

1.1.2 비용기반 옵티마이저

  • 질의 변환기 : 사용자가 작성한 SQL문을 처리하기에 보다 용이한 형태로 변환하는 모듈
  • 대안 계획 생성기 : 동일한 결과를 생성하는 다양한 대안 계획을 생성하는 모듈
    -> 대안 계획이 많아질수록 최적화를 수행하는데 시간이 오래 걸린다.
  • 비용 예측기 : 생성된 대안 계획의 비용을 예측하는 모듈
  • 인덱스를 사용하는 비용이 전체 테이블 스캔 비용보다 크다고 판단되면 전체 테이블 스캔을 수행하는 방법으로 실행계획을 생성할 수 있다.
  • 통계정보, DBMS 버전, DBMS 설정 정보등의 차이로 인해 동일 질의문도 서로 다른 실행 계획이 생성될 수 있다.

2. 실행 계획

SQL에서 요구한 사항을 처리하기 위한 절차와 방법, 실행계획마다 실행 시간(성능)은 다를 수 있음

  • 실행계획 구성요소
    • 조인순서
    • 조인기법
    • 액세스 기법
    • 최적화 정보
    • 연산

3. SQL 처리 흐름도

SQL의 내부적인 처리 절차를 시각적으로 표현한 도표

0개의 댓글