실행계획(Execution Plan)
SQL에서 요구한 사항을 처리하기 위한 절차와 방법, SQL을 어떤 순서로 어떻게 실행할 지 결정하는 작업.
→ 동일한 SQL에 대해 다양한 실행계획이 존재할 수 있지만 각 실행계획마다 성능은 서로 다를 수 있다.
이때, 옵티마이저는 최적의 실행계획을 생성해 준다.
→ 실행 계획은 예상 정보이다. 그러므로 실제 처리 건수는 실행계획에 포함되지 않음.
참고글) 옵티마이저
https://it-amin.tistory.com/36
옵티마이저(규칙기반 옵티마이저, 비용기반 옵티마이저)
옵티마이저(Optimizer) 사용자가 질의한 SQL문에 대해 최적의 실행 방법(실행계획)을 결정하는 역할. - 최적의 실행 방법 결정 : 어떤 방법으로 처리하는 것이 최소 일량으로 동일한 일을 처리할 수
it-amin.tistory.com
실행계획 구성 요소
- 조인 순서(Join Order) EMP → DEPT
- 조인 기법(Join Method) NL Join
- 액세스 기법(Access Method) 인덱스 스캔
- 최적화 정보(Optimization Information) 비용기반 최적화 방식(Cost)
- 연산(Operation)
1) 조인 순서
조인 작업을 수행할 때 참조하는 테이블의 순서
→ 논리적으로 가능한 조인 순서는 (FROM 절에 존재하는 테이블 수)! 만큼 존재하지만, 현실적으로 옵티마이저가 적용 가능한 조인 순서는 이보다 적거나 같다.
2) 조인 기법
두 개의 테이블을 조인할 때 사용할 수 있는 방법
NL Join, Hash Join, Sort Merge Join 등
3) 액세스 기법
하나의 테이블을 액세스할 때 사용할 수 있는 방법
- 인덱스 스캔(Index Scan): 인덱스를 이용하여 테이블을 액세스 함.
- 전체 테이블 스캔(Full Table Scan): 테이블 전체를 모두 읽으면서 조건을 만족하는 행을 찾음.
4) 최적화 정보
옵티마이저가 실행계획의 각 단계마다 예상되는 비용 사항을 표시한 것
비용 사항이 표시된다 → 비용기반 최적화 방식
→ 비용 정보는 실제로 SQL을 실행하고 얻은 결과가 아니라 통계 정보를 바탕으로 옵티마이저가 계산한 예상치
- Cost: 상대적인 비용 정보
- Card(Cardinality): 주어진 조건을 만족한 결과 집합 또는 조인 조건을 만족한 결과 집합의 건수
- Bytes: 결과 집합이 차지하는 메모리양을 바이트로 표시한 것.
비용 사항이 표시되지 않는다 → 규칙기반 최적화 방식
5) 연산
여러 가지 조작을 통해서 원하는 결과를 얻어내는 일련의 작업
→ 조인 기법(NL Join, Hash Join, Sort Merge Join 등), 엑세스 기법(인덱스 스캔, 전체 테이블 스캔 등), 필터, 정렬, 집계, 뷰 등 다양한 종류
ex) SQL에서 정렬을 목적으로 ORDER BY를 수행하면 정렬 연산이 표시된다.
실행계획 읽는 순서
위에서 아래로, 안에서 밖으로.
1 NESTED LOOPS
2 HASH JOIN
3 TABLE ACCESS (FULL) TAB1
4 TABLE ACCESS (FULL) TAB2
5 TABLE ACCESS (BY ROWID) TAB3
6 INDEX (UNIQUE SCAN) PK_TAB3
3 → 4 → 2 → 6 → 5 → 1
'데이터베이스 > 데이터베이스 공부' 카테고리의 다른 글
인덱스(인덱스 특징, 인덱스 종류, B-트리 인덱스, 클러스터형 인덱스) (0) | 2022.09.01 |
---|---|
SQL 처리 흐름도(SQL 처리 흐름도 구성, 조인 순서, 조인 기법, 액세스 기법, 일량) (0) | 2022.09.01 |
옵티마이저(규칙기반 옵티마이저, 비용기반 옵티마이저) (0) | 2022.09.01 |
식별자(식별자 종류, 식별자 분류체계, 식별자와 비식별자 비교) (0) | 2022.08.31 |
데이터모델링 관계(Relationship) (관계, 관계의 표기법, 관계의 분류, 관계 읽기) (0) | 2022.08.30 |