실행계획 해석
실행계획은 해당 SQL을 수행하기 위한 절차이며
오라클 옵티마이저에 의해 만들어 집니다. 해석을 위해서는 Row
Source Operartors Tree 또는 Row Source Level을 이용하여
해석하는데 아래 예를 보죠.
1.
Row
Source Operators Tree는 Serial Execution에 대한 Tree를 보여주는 것인데 실행계획은 Row Source로 구성되며 각각의 Row Source들을 Tree 형태로 구성하여 해석을 하는 것을 말합니다.
SQL> select ename, dname
2 from emp e, dept d
3 where
e.deptno = d.deptno;
Execution Plan
|
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=5
Card=14 Bytes=252)
1 0
HASH JOIN (Cost=5 Card=14 Bytes=252)
2 1
TABLE ACCESS (FULL) OF 'DEPT' (Cost=2 Card=4 Bytes=44)
Row Source Parent Key
Row Source Key
위 실행계획을 도식화 하기 위해서는 Row Source Key와 Row Source Parent Key를 알고 있으면 되는데 Row Source Key 1번은 Parent가 0번이며, 2번/3번은 1번이다. 이를 도식화하면 다음과 같다. (해석은 밑에서 위로, 좌에서 우측으로 진행을 하면 된다)
2.
Row
Source Level을 통한 해석
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=5
Card=14 Bytes=252)
3 1
TABLE ACCESS (FULL) OF 'EMP' (Cost=2 Card=14 Bytes=98)
Level 1
Level 2
Level 3
가장 안쪽의 Level 3부터
해석을 하며 같은 레벨의 경우 위쪽부터 해석을 하면 된다.
DEPT 테이블을 FULL Scan한 후 DEP 테이블을 FULL Scan하여 HASH Join 후 원하는 데이터를 추출하는 실행 계획이다.
다음의 예를 보도록 하자.
SQL> select /*+ rule */ ename, dname
2 from
emp e, dept d
3* where trim(e.deptno) = trim(d.deptno);
ENAME DNAME
----------
--------------
CLARK ACCOUNTING
KING ACCOUNTING
MILLER ACCOUNTING
SMITH RESEARCH
……
14 개의 행이 선택되었습니다.
Execution Plan
---------------------------------------------------------
0
SELECT STATEMENT Optimizer=HINT: RULE
1
0 MERGE JOIN
2
1 SORT (JOIN)
3
2 TABLE ACCESS (FULL) OF
'DEPT'
4
1 SORT (JOIN)
5
4 TABLE ACCESS (FULL) OF
'EMP'
위 실행계획에 대한 해석은
Level 4 : DEPT 테이블을 FULL SCAN + EMP 테이블을 FULL SCAN
Level 3 :
SORT(JOIN) + SORT(JOIN) à DEPT 테이블을 SORT한것과 EMP 테이블을
SORT한 두개의 집합이 된다.
Level 2 : MERGE
JOIN à Level 3에서 만들어진 두개의 집합을 Merge
Level 1 : SELECT
STATEMENT à Merge
Join을 수행하여 선택된
결과를 추출
[출처]오라클자바커뮤니티
www.oraclejavacommunity.co.kr
댓글 없음:
댓글 쓰기