데이터베이스/데이터베이스 공부

데이터베이스 실행계획(실행계획 구성요소, 조인 순서, 조인 기법, 액세스 기법, 최적화 정보, 연산, 실행계획 읽는 순서)

아밍나 2022. 9. 1. 21:29
728x90

실행계획(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

728x90
반응형