반응형

 

 - 병렬 처리란, SQL문이 수행해야 할 작업 범위를 여러 개의 작은 단위로 나누어 여러 프로세스(또는 쓰레드)가 동시에 처리하는 것을 말한다. 여러 프로세스가 동시에 작업하므로 대용량 데이터를 처리할 때 수행 속도를 극적으로 단축시킬 수 있다.

 

 - parallel 힌트를 사용할 때는 반드시  full 힌트도 함께 꼭 사용해야 한다. 옵티마이저에 의해 인덱스 스캔이 선택되면 parallel 힌트가 무시되기 때문이다.

 

SQL> SELECT /*+ full(o) parallel(o, 4) */

COUNT(*) 주문건수, SUM(주문수량) 주문수량, SUM(주문금액) 주문금액

   FROM 주문 o

   WHERE 주문일시 BETWEEN '20120101' AND '20120301'

    ;

 

 - 아래와 같이 parallel_index 힌트를 사용할 때, 반드시 index 또는 index_ffs 힌트를 함께 사용하는 습관도 필요하다.

 

SQL> SELECT /*+ index_ffs(o, 주문_idx) parallel_index(o, 주문_idx, 4) */

COUNT(*) 주문건수, SUM(주문수량) 주문수량, SUM(주문금액) 주문금액

FROM 주문 o

WHERE 주문일시 BETWEEN '20120101' AND '20120301'

;

 

*****

P.S. 병렬 DML 수행 시 Exclusive 모드 테이블 Lock이 걸리므로 트랜잭션이 활발한 주간에 절대 사용해서는 안된다.

반응형