어떤 문제를 해결하는데 병렬처리가 적합한가에 대한 이해를 도우려는 것이다.
병렬도 4로 대량 테이블을 full table scan한다면
1. 4개의 parallel 세션(p001~p004)이 서로 다른 부분의 데이터를 읽어 처리하고(producer)
2. 최종적으로 쿼리전체를 총괄하는 조정세션에 결과를 전달한다 (cordinator)
3. 정렬을 해야 한다면 추가 parallel세션(p005~p008)이 이를 수행하고(consummer) 조정세션에 결과를 전달한다
> 병렬 쿼리 : '단일 쿼리 (single query)' 를 여러 개의 운영체제 프로세스 또는 쓰레드를 사용해서 수행하는 오라클의 기능이다.
> 병럴 DUMP DML : 이것은 병렬 쿼리와 매우 비슷하나, 병렬 처리를 사용해서 변경 (INSERT ,UPDATE, DELETE, MERGE)하는 데 사용된다.
> 병렬 DDL : 병렬 DDL은 대량의 DDL 작업을 병렬로 수행하는 오라클의 기능이다
> 병렬 복구 : 장애를 복구하는데 걸리는 시간을 줄이기 위해 병렬로 인스턴스 또는 미디어 복구를 수행하는 기능이다.
> 절차적 병렬 기능 : 사용자가 개발한 코드를 병렬로 실행하기 위한 2가지 기능
방법1 : 오라클이 제공하는 방식으로 개발자가 작성한 PL/SQL 코드를 병렬로 실행하는 방법이다
방법2 : 개발된 코드가 병렬도 실행되도록 설계하는 'do-it-yourself 병렬 처리'
2-1 : 오라클 데이터베이스 11g 릴리즈 2 이상에서 유효한 방법
2-2 : 오라클 데이터베이스 11g 릴리즈 1 이하에서 유효한 방법
Parallel query 옵션은 반드시 확장성을 보장하지 않는다.
병렬 처리는 대량의 작업이면서 충분한 자원이 있을 때 탁월한 방안이다.
몇 초 소요되는 작업을 병렬로 실행할 때 더 빨라진다는 것은 불확실하며, 오히려 그 반대가 될 가능성이 더 높다.
이미 자원이 부족하다면(자원이 모두 활용되고 있다면) 병렬 처리를 추가하는 것은 상황을 더 악화시킬 것이다.
<고려사항>
충분한 I/O (iops/channel)
충분한 여유CPU
> 한 페이지 요약 : 한 사람이 작성해야 할 분량을 여러 사람이 작성하게 되면 관리비용이 부담스럽다
> 10장으로 이루어진 보고서 : 각 부분별로 담당자를 정해 동시에 진행하면 빨리 처리할 수 있다