데이터베이스 옵티마이저에 대해 설명해 주세요.
옵티마이저(Optimizer) 는 데이터베이스 관리 시스템의 일부로서, 데이터베이스 쿼리를 최적으로 실행하는 방법을 결정하는 역할을 한다.
SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는 DBMS 내부의 핵심 엔진이다.
사용자가 SQL로 결과 집합을 요구하면, 이를 생성하는데 필요한 처리경로는 DBMS에 내장된 옵티마이저가 자동으로 생성해준다.
옵티마이저가 생성한 SQL 처리경로를 실행계획(Execution Plan)이라고 한다.
옵티마이저는 인덱스, 데이터 분포 통계, 쿼리 계획의 각 연산의 비용 등의 요소를 고려하여 다양한 대안 쿼리 계획을 분석하고, 가장 빠르게 실행될 것으로 예상되는 계획을 선택한다.
옵티마이저의 SQL 최적화 과정
사용자가 던진 쿼리 수행을 위해, 후보군이 될만한 실행계획을 찾는다.
Data Dictionary에 미리 수집해 놓은 오브젝트 통계 및 시스템 통계정보를 이용해 각 실행계획의 예상 비용을 산정한다.각 실행계획을 비교하여 최저비용을 갖는 하나를 선택한다.

규칙 기반 옵티마이저(RBD : Rule-Based Optimizer)
실행 속도가 빠른 순으로 규칙을 세워두고 우선순위가 높은 방법을 채택한다.
규칙이란 액세스 경로별 우선순위로, 인덱스 구조, 연산, 조건절 형태가 순위를 결정짓는 주요인이다.
비용 기반 옵티마이저(CBO : Cost-Based Optimizer)
비용을 기반으로 최적화를 수행한다.
비용이란 쿼리를 수행하는데 소요되는 리소스 또는 시간을 뜻한다.
참고
Last updated