오라클 PARALLEL 힌트

Posted by Breeze24
2016. 6. 4. 23:50 DB/Oracle
오라클 PARALLEL 힌트


/*+ PARALLEL(table_name, degree) */
 
1) 효과 
     DISK I/O가 많은 테이블에 DISK I/O 작업을 분산시켜 작업 속도를 향상 시켜준다. 
     SORTING 작업이 많은 경우 SORTING 작업을 분산시켜 작업 속도를 향상시킬 수 있다. 

2) 효과를 볼 수 있는 시스템 환경
클러스터드 시스템
하나의 시스템에 여러개의 CPU가 있는 경우
테이블의 datafile이 분산이 되어 있는 경우
CPU 사용률이 여유가 있는 경우

.
3) 사용 전 확인 사항
system의 CPU CORE 갯수
table이 여러 disk에 걸쳐 있는 경우 datafile의 갯수


degree는 병렬도를 나타낸다. 병렬도란 CPU의 코어보다 작은 병렬을 처리 할 수 있는 수를 나타낸다. 

4) 원리 


parallel 힌트는 파티션된 테이블에서 효과적이다. 
parallel 힌트는 쿼리 분석 작업, DISK I/O작업, SORTING을 분리해서 사용할 수 있을 때 효과적이다. 
하지만 파티션 되지 않고, 하나의 데이터 파일에만 데이터가 쓰여져 있다면 DISK I/O작업은 하나의 프로세스가 처리해야 한다. 
이럴 경우 순차적으로 처리하는 방식과의 차이는 나지 않는다. 

5) 병렬 실행 여부 확인


병렬 실행 중에 아래 쿼리로 병렬 처리 여부를 확인할 수 있다. 

     select * from v$pq_sysstat where statistics = 'Servers Busy';
   
실행 계획에서 보면 Object Code에 값이 입력되어 있다.

6) 기타

 - 여러 테이블에 대해 parallel hint를 사용하려면 아래와 같이 나열한다. 

/*+ parallel(detp,8,emp,8) */
.

'DB > Oracle' 카테고리의 다른 글

DB I/O WAIT 대기 확인 및 조치 방법  (0) 2016.06.04
SQL Number Type  (0) 2016.06.04
index fast full scan  (0) 2016.06.04
DB 히트율  (0) 2016.06.04
탭 문자 제거  (0) 2016.06.04