- HOME
- [종료]구루비 DB 스터디
- 2013 상반기 DB멘토링 스터디
- 병렬 조인
03 병렬 조인
- 병렬 처리: SQL문이 수행해야 할 작업 범위를 여러 개의 작은 단위로 나누어 여러 프로세스(또는 쓰리드)가 동시에 처리하는 것
(1) 둘 다 같은 기준으로 파티셔닝된 경우 - Full Partition Wise 조인
- PX PARTITION RANGE ALL, PARTITION RANGE ITERATOR
- 하나의 서버집합만 필요
- Full Partition Wise 조인은 파티션 기반 Granule이므로 서버 프로세스 개수는 파티션 개수 이하로 제한됨
- 파티션 방식(Method)은 어떤 것이든 상관없음. Range이든 리스트이든 해시든 두 테이블이 조인 컬럼에 대해 같은 방식, 같은 기준으로 파티셔닝 돼 있다면 서로 방해받지 않고 Partition Pair끼리 독립적인 병렬 조인이 가능하기 때문
- 조인 방식도 어떤 것이든 선택 가능함.
(2) 둘 중 하나만 파티셔닝 된 경우 - Partial Partition Wise 조인
- 둘 중 한 테이블만 조인 컬럼에 대해 파티셔닝된 경우, 다른 한쪽 테이블을 같은 기준으로 동적으로 파티셔닝하고 나서 각 Partition-Pair를 독립적으로 병렬 조인하는 것
- 둘 다 파티셔닝되어있지만 파티션 기준이 서로 다른 경우
- 첫 번째 서버 집합이 테이블을 읽어 두 번째 서버 집합에 데이터를 재분배하는 것이 선행
- PARTITION (KEY), PART (KEY)
(3) 둘 다 파티셔닝 되지 않은 경우 - 동적 파티셔닝
- 첫 서버 집합이 outer 테이블 읽어 두 번째 서버 집합에 분배
- 첫 서버 집합이 inner 테이블 읽어 두 번째 서버 집합에 분배
- 두 번째 서버 집합이 각 프로세스 내부에서 조인
- 최종 결과 QC 에 전송
- 조인을 본격적으로 수행하기 전 사전 정지 작업 단계에서 메모리 자원과 Temp 테이블스페이스 공간을 많이 사용
- 양쪽 모두 파티셔닝해야 하므로 기본적으로 양쪽 테이블 모두에 대한 전체범위처리가 불가피
- 조인 컬럼의 데이터 분포가 균일하지 않을 때에는 프로세스 간 일량 차이 때문에 병렬 처리 효과가 반감될 수 있음
- 대용량이 두 테이블에서 조인 컬럼의 데이터 분포가 균일할 때 사용
(4) 둘 다 파티셔닝되지 않은 경우 - Broadcast 방식
- 첫 서버 집합이 작은 테이블 전체를 두 번째 집합의 모든 프로세스에 전송
- 첫 서버 집합이 큰 테이블을 두 번째 집합의 각 프로세스에 동적 파티셔닝 해 전송
- 두 번째 서버 집합이 각 프로세스 내부에서 조인
- 최종 결과 QC 에 전송
- broadcasat 되는 테이블은 비교적 작아서 Serial 하게 읽는것이 일반적
- 조인 방식에 무관하게 동작 가능
- 작은 테이블은 전체범위 필요, 큰 테이블은 부분범위 가능
- HOME
- [종료]구루비 DB 스터디
- 2013 상반기 DB멘토링 스터디
- 병렬 조인