/* 병렬 처리를 이용하면 여러 subtasks를 동시에 나누어 실행할 수 있으며, 메모리의 버퍼 캐시 영역을 참조하지 않기 때문에 대용량 처리에 매우 용이할 수 있다. 단, 트랜잭션이 빈번하게 발생하는 환경에서는 병렬처리를 사용해선 안 된다. */
/* PARALLEL_INDEX 힌트는 알맞는 파티션 테이블 인덱스가 존재할 때 사용하는 것이 좋다. 일반적으로 병렬 처리는 대용량 데이터 처리에 특화되어 있는 기능이기 때문이다. 더 자세한 내용은 이 책의 마지막 단원을 참고하라. */
http://www.yes24.com/Product/Goods/80997582
오라클 성능 고도화 원리와 해법 2 - YES24
`고성능 데이터베이스 애플리케이션 구축을 위해 필수적으로 이해하고 적용해야 할 원리와 해법`데이터베이스 튜닝과 관련된 핵심 주제를 중심으로, 실전에서 자주 접하는 주요 성능 이슈에 대
www.yes24.com
난이도: ★☆☆☆☆
문제 1: 세션에 trace를 활성화시키고, 테이블을 병렬도 4로 읽어라. (5분)
CREATE TABLE ryu_table_01
AS
SELECT *
FROM dba_objects
WHERE rownum <= 10000;
SET AUTOTRACE TRACEONLY EXP;
SELECT /*+ parallel(ryu_table_01, 8) */ *
FROM ryu_table_01;
난이도: ★★☆☆☆
문제 2: ryu 유저에 default 병렬도가 6인 테이블을 생성하여라. 그리고 테이블을 쿼리하여 실행계획을 확인하여라. (6분)
CONN ryu/asdf0930k;
CREATE TABLE ryu_table_02
PARALLEL (DEGREE 6)
AS
SELECT *
FROM dba_objects
WHERE rownum <= 1000;
EXPLAIN PLAN FOR
SELECT *
FROM ryu_table_02;
SELECT *
FROM table(dbms_xplan.display(null,null,'typical'));
난이도: ★★☆☆☆
문제 3: DBA_OBJECTS 뷰 베이스인 빈 테이블을 작성하여라. 그리고 DBA_OBJECTS 뷰를 병렬도 4로 읽고, 병렬도 6으로 데이터를 빈 테이블에 insert하여라.
/* INSERT ... SELECT ... 구문의 경우, 모두 같은 병렬도를 지정하는 것이 유리하다. 테이블 읽기 프로세스와 데이터 추가 프로세스의 병렬도를 굳이 서로 다르게 지정한다면, 테이블을 읽은 후 데이터 추가를 위해 데이터 분할 프로세스를 새로 진행하여야 되기 때문이다. */
CREATE TABLE ryu_table_03
AS
SELECT *
FROM dba_objects
WHERE 1=2;
INSERT /*+ parallel(ryu_table_03, 6) */ INTO ryu_table_03
SELECT /*+ parallel(dba_objects, 4) */ *
FROM dba_objects;