본문 바로가기
Database

실행계획 (Execution Plan)

by oncerun 2021. 5. 1.
반응형

실행 계획

 

 - SQL에서 요구한 사항을 처리하기 위한 절차와 방법을 의미한다. 실행계획을 생성한다는 것은 SQL을 어떤 순서로 어떻게 실행할지를 결정하는 작업이다.

 

옵티마이저는 다양한 처리방법들 중에서 가장 효율적인 방법을 찾아 주는데 실행 계획을 보고 SQL문이 어떻게 실행되는지 정확이 이해할 수 있다면 보다 향상된 SQL의 이해 및 활용이 가능할 것이다.

 

실행계획을 구성하는 요소에는 조인 순서(JOIN ORDER), 액세스 기법(ACCESS METHOD), 최적화 정보 (Optimization Information) , 연산 (Operation) 등의 있다. 

 

 

 

조인 순서

 

 - 조인 작업을 수행할 때 참조하는 테이블의 순서를 의미한다. 논리적인 조인 순서는 n! 만큼 존재한다. 여기서 n은 FROM절에 존재하는 테이블을 의미한다. 그러나 현실적으로 옵티마이저가 적용 가능한 조인 순서는 이보다 적거나 같다.

조인 기법은 두 개의 테이블을 조인할 때 사용할 수 있는 방법으로 NLJoin, Hash Join, Sort Merge Join 등이 있다.

 

액세스 기법 

 

- 액세스 기법은 하나의 테이블을 액세스 할 때 사용할 수 있는 방법이다. 예를 들면 Index Scan이나 Full Table Scan 등이 있다.

 

최적화 정보

 

- 옵티마이저가 실행계획의 각 단계마다 예상되는 비용을 표시한 것을 의미한다. 실행계획에 비용 사항이 표시된다는 것은 비용 기반 최적화 방식으로 실행계획을 생성했다는 것을 의미한다.

최적화 정보에는 COST, CARD , BTYES가 있다.

 

COST는 상대적인 비용 정보이고, CARD는 Cardinality의 약자로서 주어진 조건을 만족한 결과 집합 혹은 조인 조건을 만족한 결과 집합의 건수를 의미한다.

Bytes는 결과 집합이 차지하는 메모리 양을 바이트로 표시한 것이다. 사실 이러한 정보들은 실제 결과의 정보가 아닌 CBO가 통계정보를 바탕으로 예상한 것이다.

 

연산

 

- 연산은 여러 가지 조작을 통해서 원하는 결과를 얻어내는 일련의 작업이다. 연산은 조인 기법, 액세스. 필터, 정렬, 집계 , 뷰 등 다양한 종류가 존재한다. 쉽게 확인하기 위해선 SQL문에서 ORDER BY문을 사용하면 정렬 연산이 표시된다.

 

SQL의 처리 흐름도(Access FLow Diagram)

 

SQL의 내부적인 처리 절차를 시각적으로 표현한 다이어그램이다.

이것은 실행계획을 시각화한 것이다. 

예를 들어 SQL 문의 처리를 위해 어떤 테이블을 먼저 읽었는지?(조인 순서) , 테이블을 읽기 위해서 어떤 액세스 기법을 사용했는지?, 정렬에 어떤 연산을 사용했는지 등등을 표현할 수 있다.

 

반응형

'Database' 카테고리의 다른 글

조인 수행원리  (0) 2021.05.01
인덱스의 기본  (0) 2021.05.01
SQL 최적화의 기본원리  (0) 2021.05.01
절차형 SQL  (0) 2021.05.01
DCL(Data Controll Language)  (0) 2021.05.01

댓글