본문 바로가기

개발/Database

규칙 기반 옵티마이저(RBO), 비용 기반 옵티마이저(CBO)

규칙 기반 옵티마이저 (Rule Based Optimizer), 비용 기반 옵티마이저(Cost Based Optimizer) 에 대해 작성한다.

 

규칙 기반 옵티마이저는 규칙(우선 순위)을 가지고 실행 계획을 생성한다. 실행계획을 생성하는 규칙을 이해하면 누구나 실행계획을 비교적 쉽게 예측할 수 있다. 옵티마이저가 참조하는 정보에는 인덱스 유무와 종류, 연산자의 종류, 참조 객체의 종류 등이 있다. 이러한 참조 정보에 따라 우선순위의 규칙이 정해져 있고 이 순위를 기반으로 실행계획을 생성한다. 결과적으로 규칙기반 옵티마이저는 우선순위가 높은 규칙이 적은 일량으로 해당 작업을 수행하는 방법이라고 판단하는 것이다. 오라클의 규칙기반 옵티마이저의 15규칙은 다음과 같다.

순위 엑세스 기법
1 Single row by rowid
2 Single row by cluster join
3 Single row by hash cluster key with unique or primary key
4 Single row by unique or primary key
5 Cluster join
6 Hash cluster key
7 Indexed cluster key
8 Composite index
9 Single column index
10 Bounded range search on indexed columns
11 Unbounded range seach on indexed columns
12 Sort merge join
13 MAX or MIN of indexed colum
14 ORDER BY on indexed column
15 Full table scan

 

비용기반 옵티마이저는 처리 비용이 가장 적은 실행계획을 선택하는 방식이다. 비용을 예측하기 위해서 규칙기반 옵티마이저가 사용하지 않는 테이블, 인덱스, 컬럼 등의 다양한 객체 통계정보와 시스템 통계정보를 이용한다. 통계정보가 정확하지 않을 경우 정확한 비용 예측이 불가능하여 비효율적인 실행계획을 생성할 수 있다. 정확한 통계정보를 유지하는 것은 비용기반 최적화에서 중요한 요소이다.

비용기반 옵티마이저는 Query Transformer(질의 변환기), Estimator(비용 예측기), Plan Generator(대안 계획 생성기) 등의 모듈로 구성되어 있다.

'개발 > Database' 카테고리의 다른 글

Lock  (0) 2020.09.01
Oracle, SQL Server Architecture  (0) 2020.08.28
CTE(Common Table Expressions)  (0) 2020.08.17
ANSI SQL, Transact-SQL(T-SQL)  (0) 2020.08.16
계층형 질의(Hierarchical Query)  (0) 2020.08.14