View Source

h2. 부분범위 처리(Partial range scan)
h4. 운반단위(Array size)까지만 먼저 처리하여 그 결과를 추출시킨 후 다음 작업을 계속하겠다는 사용자의 요구가 있을 때까지 잠정적으로 수행을 멈추는 처리방식을 말함.
h4.(DBMS나 개발 Tool에 따라 이러한 기능을 제공하지 못하는 것들도 있다)

{code:sql}


부분 범위 예시
사용 Tool : SQLPLUS
옵션 : arraysize, pause

SQL> show arraysize
arraysize 15
SQL> show pause
PAUSE는 OFF
SQL> set arraysize 5
SQL> set pause on
SQL> show arraysize
arraysize 5
SQL> show pause
PAUSE는 "로 ON 되고 지정되었습니다"


SQL> select * from scott.emp;

enter 입력

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80/12/17 800 20
7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30
7521 WARD SALESMAN 7698 81/02/22 1250 500 30


enter 입력

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------

7566 JONES MANAGER 7839 81/04/02 2975 20
7654 MARTIN SALESMAN 7698 81/09/28 1250 1400 30
7698 BLAKE MANAGER 7839 81/05/01 2850 30

.
.
.

{code}


h3. 1.1 부분범위 처리의 개념


!p409.jpg!


{note:title=^^}


전체범위처리 ( 주어진 조건의 범위가 좁은 경우는 문제가 없으나 넓은 경우는 빠른 수행속도를 기대하기 어려움)
1. 드라이빙 조건을 만족하는 범위를 모두 스캔
2. 체크조건 검증한 후 성공한 건에 대해 임시 저장공간에 저장
3. 저장이 완료되면 필요한 2차 가공을 한 후 운반단위만큼 추출시키고 다음 요구가 있을 때까지 일단 멈춤

부분범위처리 ( 처리할 범위가 아무리 넓다고 하더라도 그 범위 중의 일부만 처리)
1. 드라이빙 조건을 만족하는 범위를 차례로 스캔함
2. 체크조건을 검증하여 성공한 건을 바로 운반단위로 보냄
3. 운반단위가 채원지면 수행을 멈추고 결과를 추출

{note}




공통점 : 항상 운반단위만 채워지면 일단은 멈춘다.
-운반단위만큼만 추출되었다고 그것이 부분범위 처리를 한 것이라고 단정지어서는 안된다.




h3. 전체범위 처리를 하는 부분은 전 영역일 수도 있고 특정한 영역에 국한 될 수도 있다.

!p410.jpg!


h3. 전체범위 :
SORT 실행계획, VIEW 실행계획, Sort Merge 조인, HASH JOIN( 인-메모리 해쉬조인 아닐때)




h3. 부분범위 :
HASH JOIN(인-메모리 해쉬조인)
SQL_TRACE에서 Execute나 Fetch라인에 있는 'Query'나 'Disk', 'Current'를 확인하여 전체 테이블의 블록 수보다 훨씬 적을때



h2. 문서에 대하여

* 최초작성자 : [이창헌||이창헌]
* 최초작성일 : 2011년 7월 30일
* 수정작성일 : 2011년 7월 30일
* 이 문서는 [오라클클럽|http://www.gurubee.net] 대용량 데이터베이스 스터디 모임에서 작성하였습니다.
* {color:blue}{*}이 문서의 내용은 (주)엔코아컨설팅에서 출간한 '새로 쓴, 대용량 데이터 베이스 솔루션'을 참고하였습니다.*{color}