Back-End/SQL 개발자 자격증

[ 데이터베이스 ] Optimizer, Execution Plan

psy_er 2023. 10. 28. 16:48
728x90

[ 데이터베이스 ] Optimizer, Execution Plan

 

옵티마이저

 

실행계획 : 사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정

옵티마이저의 역할 : 사용자 요구사항 최적의 실행방법 결정, 적절성 여부는 질의의 수행 속도에 영향

실제 SQL문 실행하지 않은 상태에서 최적의 실행 방법 결정하기

 

 

규칙기반 옵티마이저

 

규칙기반 옵티마이저 (RBO) : 보편 타당성에 근거함

 

규칙 1. Single row by Rowid

ROWID를 통해 다른 정보를 참조하지 않고도 원하는 행 액세스 가능, 가장 빠른 방법이다.

 

규칙 4. Single row by unique or primary key

유일 인덱스를 먼저 액세스 하고 인덱스에 존재하는 ROWID 추출하기

 

규칙 8. Composite index

복합 인덱스에 동등('='연산자) 조건으로 검색하는 경우이다.

인덱스 구성 칼럼의 개수가 더 많고, '='로 값이 주어질수록 우선순위가 더 높다

ex) A+B+C = 10

 

규칙 9. Single column index 

단일 칼럼 인덱스에 동등('='연산자) 조건으로 검색하는 경우이다.

ex) A+B = 7

 

규칙 10. Bounded range search on indexed columns

BETWEEN, LIKE와 같이 인덱스 생성되어 있는 칼럼에 양쪽 범위를 한정하는 형태로 검색하는 방식

ex) A BETWEEN '10' and '20'

 

규칙 11. Unbounded range search

인덱스가 생성되어 있는 칼럼에 한쪽 범위만 한정하는 형태

ex) A > '10'

 

규칙 15. Full Table Scan

전체 테이블 액세스, 조건절에 주어진 조건 만족하는 행만 결과로 추출

일반적으로 속도가 느리지만, 병렬 처리 가능

 

 

비용 기반 옵티마이저(CBO)

 

- RBO의 규칙으로 모든 사항을 정확히 예측할 수 없어 단점 극복하기 위해 등장함.

- SQL문 처리하는데 비용이 가장 적은 실행 계획 선택하는 방식이다.

- 비용 : 소요시간 or 자원 사용량

- 비용을 예측하기위해 객체 통계정보, 시스템 통계정보 등을 이용한다.

- 통계정보에 따라 동일 SQL문이 다른 실행계획으로 생성될 수 있다.

- 여러 한계로 실행계획 예측과 제어가 어렵다

 

 

CBO의 모듈

 

질의 변환기 : 사용자가 작성한 SQL문을 작업하기 용이한 형태로 변환시키는 모듈

 

대안 계획 생성기 : 동일한 결과를 생성하는 다양한 대안 계획을 생성하는 모듈, 제약이 있기 때문에 생성된 대안 계획 중 최적이 없을 수도 있다.

 

비용 예측기 : 정확한 통계정보를 이용하여 대안 계획의 비용을 예측하는 모듈

 

728x90