개요
- DBMS 내부에서 프로시저를 작성하고 컴파일해서 실행 가능한 상태로 만드는 전 과정을 SQL 최적화 라고 한다.
1. SQL파싱
사용자로부터 SQL을 전달받으면 먼저 SQL파서가 파싱을 진행한다.
- 파싱트리생성
- SQL문을 이루는 개별 구성요소를 분석해서 파싱트리를 생성한다.
- Syntax 체크
- Semantic 체크
- 의미상 오류가 없는지 확인한다. ex) 존재하는 테이블 또는 컬럼인지? 권한이 있는지?
2. SQL최적화
옵티마이저의 역할이다. 다양한 실행경로를 생성해서 가장 효율적인 실행경로를 선택한다.
- 전달받은 쿼리를 수행하는데 후보군이 될만한 실행계획들을 찾아낸다.
- 데이터 딕셔너리에 미리 수집해 둔 통계정보를 이용해 각 실행계획의 예상비용은 산정한다.
- 최저 비용을 나타내는 실행계획을 선택한다.
3. 로우소스 생성
로우 소스 생성기의 역할이다. 앞서 2)에서 선택한 실행경로를 실제 실행 가능한 코드 또는 프로시저 형태로 포맷팅한다.