[ 데이터베이스 ] 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문을 작업하기 용이한 형태로 변환시키는 모듈
대안 계획 생성기 : 동일한 결과를 생성하는 다양한 대안 계획을 생성하는 모듈, 제약이 있기 때문에 생성된 대안 계획 중 최적이 없을 수도 있다.
비용 예측기 : 정확한 통계정보를 이용하여 대안 계획의 비용을 예측하는 모듈
'Back-End > SQL 개발자 자격증' 카테고리의 다른 글
[ 데이터베이스 ] ERD, Data Modeling, Normalization (0) | 2023.11.01 |
---|---|
[ 데이터베이스 ] Optimizer, Execution Plan 2 (1) | 2023.10.30 |
[ 데이터베이스 ] FUNCTION - 1 (2) | 2023.10.16 |
[ 데이터베이스 ] WHERE, IN, LIKE, IS NULL, ROWNUM, TOP (0) | 2023.10.01 |
[ 데이터베이스 ] DML (INSERT, DELETE, SELECT, ALIAS, DUAL) (0) | 2023.09.29 |