본문 바로가기
CS/Database

[데이터베이스] 옵티마이저(Optimizer)

by 테리는당근을좋아해 2020. 6. 24.

옵티마이저(Optimizer)

인덱스의 유무, 데이터 분산 또는 편향 정도의 통계 정보를 참조해 여러 실행 계획을 세우고 비용의 연산해 가장 낮은 비용을 가진 실행 계획을 선택하는 DBMS의 핵심 엔진

 

1) 실행 계획

- SQL에서 요구한 사항을 처리하기 위한 절차와 방법

- 동일한 SQL에 대해 결과를 내는 방법은 여러 가지지만 각 비용은 서로 다름

 

2) 사용 이유

- DB에서 데이터 조회나 저장에 많은 시간을 소모

- 그러므로 옵티마이저를 통해 쿼리에 소요되는 시간을 줄이고 DB 성능을 향상

 

3) 한정된 통계 자료로 최적화를 못할 경우?

수동으로 해줘야함

 

4) 옵티마이저의 목표

a. 전체 처리속도 최적화

b. 최초 응답속도 최적화

 

5) SQL 최적화 과정

a. 쿼리 수행을 위해 후보군이 될만한 실행 계획 검색

b. 데이터 딕셔너리에 미리 수집한 오브젝트 동계 및 시스템 통계 정보를 이용해 각 실행 계획의 예상 비용 선정

c. 각 실행계획 비교후 최저비용 하나를 선택

 

6) 서브엔진 별 역할

a. 파서(Parser)

문장 개별 요소 분석하고 파싱해서 파싱 트리 생성

 

b. 옵티마이저(Optimizer)

- Query Transformer : 파싱된 SQL을 표준적인 형태로 변환

- Estimator : 오브젝트 및 시스템 통계를 기반으로 실행 계획 전체에 대한 총 비용 계산

- Plan Generator : 후보군이 될만한 실행 계획 생성

 

c. Row-Source Genrator

옵티마이저의 실행 계획을 SQL Engine이 실행 가능한 코드 형태로 변환하는 작업 수행

 

d. SQL Engine

SQL문  실행

댓글