메뉴 건너뛰기

bysql.net

3. 병렬 조인

2011.06.29 05:35

오예스 조회 수:4969

03 병렬 조인

 

 병렬 조인 원리 : 병렬 프로세스들이 서로 독립적으로 조인을 수행할 수 있도록 데이터를 분배하는 데에 있다. 분배작업이 완료 되고 나면 프로세스 간에 서로 방해받지 않고(통신 불필요) 각자 할당받은 범위내에서 조인을 완료한다.

 

1. 파티션 방식 : Parition -Pair 끼리 조인 수행

2. Broadcast 방식 : 한쪽 테이블을 Broadcast하고 나서 조인 수행(-> 파티셔닝 불필요)

 

1. 파티션 방식 : Parition -Pair 끼리 조인 수행

(1) 둘 다 같은 기준으로 파티셔닝된 경우. -Full Partition Wise 조인

앞서 예시한 병렬 조인 문장을 처리하는 데 있어, 조인에 참여하는 두 테이블이 조인 컬럼(dept_no)에 대해 같은 기준으로 파티셔닝 돼 있다면 병렬 조인은 매우 간단하다.

 

 * 뒤에서 설명하겠지만 다른 병렬 조인은 두 개의 서버집합이 필요한 반면, 여기서는 하나의 서버집합만 필요하다.

 * Full Partition Wise 조인은 파티션 기반 Granule 이므로 서버 프로세스 개수는 파티션 개수 이하로 제한 된다.

 * 파티션 방식은 어떤 것이든 상관없다. Range이든 리스트이든 해시이든 두테이블이 조인 컬럼에 대해 같은 방식, 같은 기준으로 파티셔닝 돼 있다면 서로 방해받지 않고 Partition Pair 끼리 독립적인 병렬 조인이 가능하기 때문이다.

 * 조인 방식도 어떤 것이든 선택 가능하다. NL 조인, 소트 머지 조인, 해시 조인등.

 

(2)둘 중 하나만 파티셔닝된 경우 - Partial Partition Wise 조인.

 둘 중 한 테이블만 조인 컬럼에 대해 파티셔닝된 경우, 다른 한쪽 테이블을 같은 기준으로 동적으로 파티셔닝하고 나서 각 Partiton - Pair를 독립적으로 병렬 조인하는것을 Partial Partition Wise 조인'이라고 한다. 둘 다 파티셔닝되었지만 파티션 기준이 서로 다른 경우도 이 방식으로 조인될 수 있다.

 중요한 것은 데이터를 동적으로 파티셔닝하기 위해선 데이터 재분배가 선행되어야 한다는 사실이다. 즉 Inter - operation paralleism을 위해 두개의 서버 집합이 필요하다.

 

(3) 둘 다 파티셔닝되지 않은 경우 - 동적 파티셔닝.

 조인 컬럼에 대해 어느 한 쪽도 파티셔닝되지 않은 상황이라면 오라클은 두 가지 방식 중 하나를 사용한다.

  - 양쪽 테이블을 동적으로 파티셔닝하고서 Full Partition Wise 조인.

  - 한쪽 테이블을 Broadcast하고 나서 조인.

 * 이 방식의 특징은 조인을 본격적으로 수행하기 전 사전 정지 작업단계에서 메모리 자원과 테이블스페이스공간을 많이 사용한다는 데에 있다. 그리고 양쪽 모두파티셔닝해야 하므로 기본적으로 양쪽 테이블 모두에 대한 전체범위처리가 불가피하다.

 또한 조인 컬럼의 데이터분포가 균일하지 않을 때는 프로세스 간 일량 차이 때문에 병렬 처리 효과가 크게 반감될 수 있따. 예를 들어, 상품권 업무를 담당하는 사원이 몇몇 사람에게 집중된 상황에서 아래 병렬 쿼리를 이 방식으로 수행한다면 16개 중 일부 프로세스만 열심히 일하고 나머지는 Idle 상태로 대기하는 현상이 발생할 것이다.

 물론 이런 특징은 Partition Wise 조인에서도 똑같이 나타날 수 있다. 하지만 그의 컬럼이라면 애당초 파티션 기준 컬럼으로 부적당한 것이므로 병렬 조인의 비효율보다는 파티션 전략의 오류로 보는 것이 타당하다.

 

2. Broadcast 방식 : 한쪽 테이블을 Broadcast하고 나서 조인 수행(-> 파티셔닝 불필요)

(1) 둘 다 파티셔닝되지 않은 경우 - Broadcast방식

 조인컬럼에대해어느 한 쪽도 파티셔닝되지 않은 상황에서 오라클이 선택할 수 있는 두 번째 방식은 Broadcast 방식으로서, 두 테이블 중 작은 쪽을 반대편 서버 집합의 "모든"프로세스에 Broadcast 하고 나서 조인을 수행하는 방식.

 

* Broadcast는 작은테이블임이 전제되어야하므로 Serial 스캔으로 처리할 때도 많다.따라서 P->P가 아닌 S->P 형태가 오히려 일반적이고 이는 두 테이블 중 한쪽 테이블만 병렬로처리함을 뜻한다.

* Broadcast가 이루어지고 나서의 조인방식은 어떤 것이든 선택 가능하다. NL 조인, 소트 머지 조인, 해시 조인등

* Broadcast되는 작은 쪽 테이블은 전체범위처리가 불가피하지만 큰 테이블은 부분범위 처리가 가능하다.

 

4가지 병렬조인방식의 특징.

병렬조인방식

특징

full Partition Wise 조인 * 두 테이블모두 조인 컬럼에 대해 같은기준으로파티셔닝
* 데이터 재분배 불필요-> 단일 서버 집합만으로 수행
Partial Partition Wise 조인 * 둘 중 한 테이블만 조인 컬럼에 대해 파티셔닝된 경우
* 파티셔닝되지 않은 다른 쪽 테이블을 같은 기준으로 파티셔닝하고 나서 Full Partition Wise 조인
* 동적 파티셔닝을 위한 데이터 재분배 필요 -> 두개의 서버 집합이 작업 수행
동적파티셔닝 * 어느 한쪽도 조인 컬럼에 대해 파티셔닝되지 않은 상황
* 양쪽 테이블이 모두 대용량
* 임시 테이블스페이스를 많이 사용
* 양쪽 테이블 모두 전체범위처리
* 조인 컬럼의 데이터 분포가 균일해야함
Broadcast * 어느 한 쪽도조인 컬럼에 대해 파티셔닝되지  않은 상황
* 둘 중 하나의 테이블이 매우 작을 때
* 동적파티셔닝이 불필요 -> 큰 테이블에대한 부분범위처리가능
번호 제목 글쓴이 날짜 조회 수
35 6. 조인 제거 AskZZang 2011.06.01 5441
34 4. 조건절 Pushing 오예스 2011.05.31 17484
33 5. 조건절 이행 file balto 2011.05.30 5465
32 2. 서브쿼리 Unnesting 토시리 2011.05.18 2079
31 3. 뷰 Merging 오라클잭 2011.05.17 6082
30 1. 쿼리 변환이란? 운영자 2011.05.16 6258
29 8. 통계정보 Ⅱ AskZZang 2011.05.04 5913
28 7. 비용 file balto 2011.05.02 5001
27 5. 카디널리티 오라클잭 2011.04.27 12919
26 6. 히스토그램 오예스 2011.04.25 17394
25 4. 통계정보 Ⅰ file 토시리 2011.04.25 16015
24 3. 옵티마이저의 한계 휘휘 2011.04.19 6698
23 2. 옵티마이저 행동에 영향을 미치는 요소 balto 2011.04.18 6161
22 3. 옵티마이저의 한계 - P 휘휘 2011.04.18 3699
21 1. 옵티마이저 file 휘휘 2011.04.18 6068
20 8. 고급 조인 테크닉-1 file 휘휘 2011.04.05 6461
19 8. 고급 조인 테크닉-2 오라클잭 2011.04.05 12562
18 7. 조인을 내포한 DML 튜닝 오예스 2011.04.04 9947
17 4. 조인 순서의 중요성 AskZZang 2011.03.30 5328
16 1. 인덱스 구조 file 운영자 2011.03.30 15952