1. 옵티마이저
SQL을 가장 빠르고 효율적으로 수행할 최적의 처리 경로를 생성해주는 DBMS 내부의 핵심 엔진
최적의 실행 방법을 실행꼐획(Execution Plan)이라고 한다.
1.1 옵티마이저 유형
| 규칙기반 옵티마이저(RBO) | 비용기반 옵티마이저(CBO) |
---|
개념 | 통계정보 없이 사전 등록된 규칙에 따라 질의 실행 계획을 선택 | 통계 정보로부터 모든 접근 경로를 고려한 질의 실행 계획을 선택 |
핵심 | 규칙(우선순위 기반) | 비용(수행 시간)기반 |
평가 기준 | 인덱스 구조, 연산자, 조건절 형태 등 | 레코드 개수, 블록 개수, 평균 행 길이, 컬럼 값의 수,... |
장점 | 사용자가 원하는 처리 경로로 유도하기 쉬움 | 옵티마이저의 이해도가 낮아도 성능보장 가능 |
1.1.1 규칙기반 옵티마이저
- 인덱스를 이용한 액세스 방식이 전체 테이블 액세스 방식보다 우선수위가 높다.
- 조인 순서를 결정할 때 조인 컬럼의 인덱스 존재 유무가 중요한 판단의 기준이 된다.
- 조인 컬럼에 대한 인덱스가 양쪽에 존재 : 우선순위가 높은 테이블이 선행 테이블
- 한쪽에만 인덱스 존재 : 인덱스가 없는 테이블이 선행 테이블
- 모두 인덱스 존재 안함 : FROM 절 뒤에 나열된 테이블이 선행 테이블
- 우선순위가 동일 : FROM 절에 나열된 테이블의 역순으로 선행 테이블 선택
1.1.2 비용기반 옵티마이저
- 질의 변환기 : 사용자가 작성한 SQL문을 처리하기에 보다 용이한 형태로 변환하는 모듈
- 대안 계획 생성기 : 동일한 결과를 생성하는 다양한 대안 계획을 생성하는 모듈
-> 대안 계획이 많아질수록 최적화를 수행하는데 시간이 오래 걸린다.
- 비용 예측기 : 생성된 대안 계획의 비용을 예측하는 모듈
- 인덱스를 사용하는 비용이 전체 테이블 스캔 비용보다 크다고 판단되면 전체 테이블 스캔을 수행하는 방법으로 실행계획을 생성할 수 있다.
- 통계정보, DBMS 버전, DBMS 설정 정보등의 차이로 인해 동일 질의문도 서로 다른 실행 계획이 생성될 수 있다.
2. 실행 계획
SQL에서 요구한 사항을 처리하기 위한 절차와 방법, 실행계획마다 실행 시간(성능)은 다를 수 있음
- 실행계획 구성요소
- 조인순서
- 조인기법
- 액세스 기법
- 최적화 정보
- 연산
3. SQL 처리 흐름도
SQL의 내부적인 처리 절차를 시각적으로 표현한 도표