병렬 처리 활용(고급 SQL 튜닝) - SQL전문가 가이드 p.727~p.728
개발 및 관리/Oracle 9i, 10g, 11g, 12c, 19c 2012. 10. 26. 19:16반응형
- 병렬 처리란, 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이 걸리므로 트랜잭션이 활발한 주간에 절대 사용해서는 안된다.
반응형
'개발 및 관리 > Oracle 9i, 10g, 11g, 12c, 19c' 카테고리의 다른 글
(Oracle Database Server) 중앙정보처리학원 - 2012년 11월 06일 화요일 2/2 (0) | 2012.11.06 |
---|---|
(Oracle Database Server) 중앙정보처리학원 - 2012년 11월 06일 화요일 1/2 (0) | 2012.11.06 |
배치 프로그램 튜닝 요약(고급 SQL 튜닝) - SQL전문가 가이드 p.727 (0) | 2012.10.26 |
인덱스 파티셔닝 가이드(고급 SQL 튜닝) - SQL전문가 가이드 p.722~p.723 (0) | 2012.10.26 |
Merge문 활용(고급 SQL 튜닝) - SQL전문가 가이드 p.714~p.715 (0) | 2012.10.26 |