by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

14S_병렬 처리 사용 시기




병렬처리

이 장의 목적

어떤 문제를 해결하는데 병렬처리가 적합한가에 대한 이해를 도우려는 것이다.

병렬처리

  • 오라클 Enterprise Edition의 기능 중 하나이다.
  • 대량의 Serial 작업(Query, 일반적인 DML, DDL)을 작은 단위로 나누어 동시에 처리할 수 있는 기능이다.
  • 큰 작업을 작은 단위의 작업으로 나누어 동시에 처리함으로써 전체 작업에 소용되는 총 시간을 줄이는 것이 목적이다.

수행방식

병렬도 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장으로 이루어진 보고서 : 각 부분별로 담당자를 정해 동시에 진행하면 빨리 처리할 수 있다

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.