옵티마이저가 SQL을 처리하는 방식
1.1.2 SQL 최적화
19p
SQL을 실행하기 전 최적화 과정을 세분화하면 아래와 같다.
- SQL 파싱
사용자로부터 SQL을 전달받으면 가장 먼저 SQL 파서가 파싱을 진행한다.
- 파싱 트리 생성 : SQL문을 이루는 개별 구성요소를 분석해서 파싱 트리 생성
- Syntax 체크 : 문법적 오류가 없는지 확인. 예를 들어, 사용할 수 없는 키워드를 사용했거나, 순서가 바르지 않거나 누락된 키워드가 있는지 확인
- Semantic 체크 : 의미상 오류가 없는지 확인. ex) 존재하지 않는 테이블 또는 컬럼을 사용했는지, 사용한 오브젝트에 대한 권한이 있는지 확인
- SQL 최적화
옵티마이저가 그 역할을 맡는다. SQL 옵티마이저는 미리 수집한 시스템 및 오브젝트 통계정보를 바탕으로 다양한 실행경로를 생성해서 비교한 후 가장 효율적인 하나를 선택한다. 데이터베이스 성능을 결정하는 가장 핵심적인 엔진이다.
- 로우 소스 생성
SQL 옵티마이저가 선택한 실행경로를 실제 실행 가능한 코드 또는 프로시저 형태로 포멧팅하는 단계. 로우 소스 생성기(Row-source Generator)가 그 역할을 맡는다.
1.1.3 SQL 옵티마이저
20p
SQL 옵티마이저란? 사용자가 원하는 작업을 가장 효율적으로 수행할 수 있는 최적의 데이터 엑세스 경로를 생성해 주는 DBMS의 핵심 엔진. 옵티마이저의 최적화 단계를 요약하면 아래와 같다.
- 사용자로부터 전달받은 쿼리를 수행하는 데 후보군이 될만한 실행계획들을 찾아낸다.
- 데이터 딕셔너리에 미리 수집해 둔 오브젝트 통계 및 시스템 통계정보를 이용해 각 실행계획의 예상비용을 산정한다.
- 최저 비용을 나타내는 실행계획을 선택한다.
1.1.4 실행계획과 비용
21p
옵티마이저는 자동차 내비게이션과 여러모로 흡사.