📚CS/SQL
SQL 기본 및 활용 - 옵티마이저와 실행계획
바규냐하
2023. 8. 6. 16:57
1. 옵티마이저
옵티마이저는 사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정하는 역할을 수행한다.
이러한 최적의 실행 방법을 실행계획이라고 한다.
관계형 데이터베이스는 궁극적으로 SQL문을 통해서만 데이터를 처리할 수 있다.
프로그래밍 언어와는 달리 SQL은 사용자의 요구사항만 기술할 뿐 처리과정에 대한 기술은 하지 않는다.
그러므로 사용자의 요구사항을 만족하는 결과를 추출할 수 있는 다양한 실행 방법이 존재할 수 있다.
다양한 실행 방법들 중에서 최적의 실행 방법을 결정하는 것이 옵티마이저의 역할이다.
규칙기반 옵티마이저
SELECT ENAME FROM EMP WHERER JOB = 'SALEMAN' AND SAL BETWEEN 3000 AND 6000
INDEX --------------------------------- EMP_JOB : JOB EMP_SAL : SAL PK_EMP : EMPNO (UNIQUE)
조건절에서 JOB 칼럼의 조건은 ‘=’, SAL 칼럼의 조건은 ‘BETWEEN’으로 값이 주어졌고 각각의 칼럼에 단일 칼럼 인덱스가 존재한다.
우선 순위 규칙에 따라 JOB 조건은 규칙 9의 단일 칼럼 인덱스를 만족하고 SAL 조건은 규칙 10의 인덱스상의 양쪽 한정 검색을 만족한다.
따라서 우선 순위가 높은 EMP_JOB 인덱스를 이용해서 조건을 만족하는 행에 대해 EMP 테이블을 액세스하는 방식을 선택할 것이다.
규칙기반 옵티마이저가 생성되 실행계획이다
Execution Plan ------------------------------------------------------------ SELECT STATEMENT
Optimizer=CHOOSE TABLE ACCESS (BY INDEX ROWID) OF 'EMP' INDEX (RANGE SCAN) OF 'EMP_JOB' (NON-UNIQUE)
비용기반 옵티마이저
비용기반 옵티마이저는 질의 변환기, 대안 계획 생성기, 비용 예측기 등의 모듈로 구성되어 있다.
질의 변환기는 사용자가 작성한 SQL문을 처리하기에 보다 용이한 형태로 변환하는 모듈이다.
대안 계획 생성기는 동일한 결과를 생성하는 다양한 대안 계획을 생성하는 모듈이다.
비용 예측기는 대안 계획 생성기에 의해서 생성된 대안 계획의 비용을 예측하는 모듈이다.
2. 실행계획
실행계획이란 SQL에서 요구한 사항을 처리하기 위한 절차와 방법을 의미한다.
실행계획을 구성하는 요소에는 조인 순서, 조인 기법, 엑세스 기법, 최적화 정보, 연산 등이 있다
3. SQL 처리 흐름도
글에서 나오는 코드와 내용은 책 SQL 전문가 가이드에서 가져옴을 알립니다.