본문 바로가기

카테고리 없음

ORACLE EXECUTION PLAN v1.0


ORACLE EXECUTION PLAN

 

from 실행계획으로 배우는 고성능 데이터베이스 튜닝 | 권순용 | 비팬북스

 

1.  ORACLE EXECUTION PLAN

실행플랜의 오퍼레이션은 아래와 같이 나뉜다.

A.   TABLE

              i.      BY INDEX ROWID

            ii.      FULL SCAN

           iii.      BY USER ROWID

            iv.      SAMPLE

B.   INDEX

              i.      INDEX RANGE SCAN

            ii.      INDEX UNIQUE SCAN

           iii.      INDEX AND-EQUALS

            iv.      INDEX FULL SCAN

              v.      INDEX FAST FULL SCAN

            vi.      INDEX PARALLEL SCAN

           vii.      INDEX SKIP SCAN

         viii.      INDEX MIN/MAX SCAN

            ix.      INDEX JOIN

C.   SORT

              i.      SORT(AGGREGATE)

            ii.      SORT(UNIQUE)

           iii.      SORT(GROUP BY)

            iv.      SORT(ORDER BY)

D.   ORACLE OPERATOR

              i.      IN

            ii.      UNION ALL

           iii.      UNION

            iv.      MINUS

E.   JOIN

              i.      NESTED LOOP JOIN(NL JOIN)

            ii.      HASH JOIN

           iii.      SORT MERGE JOIN

F.   PARTITION

G.   etc

              i.      VIEW

            ii.      STOP KEY

 

2.  ORACLE EXECUTION PLAN 요약

A.   TABLE

흔히 말하는 랜덤엑세스는 BY INDEX ROWID 를 통한 오퍼레이션을 의미한다.

BY USER ROWID 는 본래 INDEX 블록을 엑세스 해 얻어야 할 ROWID USER

직접 부여하는 경우 나타나는 오퍼레이션이다.

SAMPLE 은 샘플링하는 것을 말한다. FROM TABLE SAMPLE(PERCENTAGE) 형태로 사용한다.

B.   INDEX

INDEX 를 사용하게 되는 일반적인 경우는 WHERE 절에 조건절을 부여했을 때인데

이때 조건은 연산자에 따라 두가지 타입으로 나뉜다.

POINT CONDITION / LINE CONDITION 로 나뉘는데 대표적으로 예를 들자면 전자의

경우 ‘=’ 가 있으며 후자의 경우 ‘BETWEEN’ 이 있다.

RANGE SCAN +1 스캔을 한다고 말한다. 이는 리프블록을 랜덤엑세스 한 후

이래로 인덱스 리프블록을 스캔방식으로 읽어들이는데 찾고자 하는 값이 아닌

경우까지 읽고서야 스캔을 멈추기 때문이다.

C.   SORT

메모리상에서 정렬작업을 한다. 데이터베이스가 대용량화 되가면서 정렬작업은

부하가 큰 작업으로 인식되고 있다.

D.   ORACLE OPERATOR

IN 을 제외한 나머지 UNION ALL, UNION, MINUS 는 집합연산자이다.

E.   JOIN

F.   PARTITION

파티션 테이블,인덱스와 관련된 플랜이다.

G.   etc

VIEW 는 메모리 공간을 이용해 임시생성된다.

STOP KEY USER ROWNUM 을 이용하면 발견된다.