옵티마이저
- 사용자가 질의한 SQL문에 대한 최적의 실행방법을 결정하는 역할을 수행한다. 이러한 최적의 실행방법을 실행계획이라고 하낟.
- 사용자가 요구사항을 만족하는 결과를 추출할 수 있는 다양한 실행 방법이 존재한다.
- 다양한 실행 방법들을 도출하고 그중에서 최적의 실행방법을 결정하는 것이 옵티마이저의 역할이다.
비용기반 옵티마이저
- SQL문을 처리하는데 비용이 가장 적게 드는 실행계획을 선택하는 방식이다. 비용이란 SQL문을 처리하는데 예상되는 시간 또는 자원을 의미한다.
- 테이블, 인덱스 등의 통계정보와 시스템 통계정보를 이용하여 최적의 실행계획을 도출한다.
- 인덱스를 사용하는 비용이 테이블 풀 스캔 비용보다 크다고 판단되면 테이블 풀 스캔을 유도하게 된다.
- 예전엔 규칙기반 옵티마이저: 인덱스가 있으면 무조건 인덱스를 타는 방식
옵티마이저의구성요소
질의 변환기(Query Transformer)
- 사용자가 작성한 SQL문을 처리하기에 보다 용이한 형태의 SQL문으로 변환
비용예측기(Estimator)
- 대안 계획 생성기에 의해서 생성된 대안 계획의 비용을 예측하는 모듈
- 대안 계획의 정확한 비용을 측정하기 위해서 연산의 중간 집합의 크기 및 결과 집합의 크기, 분포도 등의 예측을 함, 보다 나은 예측을 위해서 정확한 통계 정보가 필요함
대안계획생성기(Plan Generator)
- 동일한 결과를 생성하는 다양한 대안 계획을 생성하는 모듈
- 대안 계획은 연산의 적용 순서, 연산방법변경, 조인 순서 변경 등을 통해서 생성
- 동일한 결과를 생성하는 가능한 모든 대안 계획을 생성해야 보다 나은 최적화를 수행할 수 있음
네이게이션과 옵티마이저 비교
실행계획 예시
실행계획 위에서 아래로, 젤 안쪽 에서 부터 바깥쪽으로 실행된다. 중간에 INDEX~부터 실행됨
실행내역 확인
현재 접속한 세션의 통계 레벨을 ALL로 설정
SQL문 실행
SQL문의 실행 정보 조회
실행 내역 출력
실행 내역 확인
옵티마이저의 선택 - INDEX RANGE SCAN
인덱스 생성 후 SQL문 실행
'Computer Science > 데이터베이스' 카테고리의 다른 글
조인 수행 원리 (0) | 2023.06.10 |
---|---|
인덱스 기본 (1) | 2023.06.10 |
SQL 절차형 SQL - Oracle (0) | 2023.06.10 |
SQL DCL(Data Control Langauge)- Oracle (0) | 2023.06.10 |
SQL 윈도우 함수(WINDOW FUNCTION) - Oracle (1) | 2023.06.10 |