병렬 조인 분배
| 분배 방식 | 특징 | 동작 원리 | 적합한 상황 |
|---|---|---|---|
| Hash | 조인 키 값을 해시 함수에 적용하여 분배 | 양쪽 테이블의 조인 키에 해시 함수를 적용하여 동일한 해시 값을 가진 데이터끼리 같은 서버 세트로 보냄. | 두 테이블 모두 크기가 크고, 조인 키의 분포가 고를 때 (가장 일반적) |
| Broadcast | 한쪽 테이블을 모든 서버 프로세스에 복제 | 크기가 작은 테이블을 모든 병렬 서버 프로세스에 통째로 복제하여 전달함. | 대용량 테이블과 아주 작은 테이블(Dimension Table 등)을 조인할 때 |
| Range | 조인 키의 값 범위에 따라 분배 | 데이터 정렬 후 특정 값 범위별로 서버 프로세스에 할당함. | 주로 병렬 정렬 조인이나 범위 조건이 포함된 조인에서 사용됨. |
| Key | 특정 인덱스나 파티션 키를 기준으로 분배 | 이미 파티셔닝된 테이블의 경우, 파티션 정보를 이용하여 데이터를 재배치하지 않고 그대로 활용함. | 파티션 간 조인(Partition-Wise Join)이 가능할 때 |
| Round-Robin | 순차적으로 데이터를 프로세스에 할당 | 조인 키와 상관없이 빈 프로세스에 순서대로 데이터를 보냄. | 조인 자체보다는 데이터를 단순히 읽거나 분산시킬 때 사용 (조인 성능엔 불리) |
실행 계획에서 PQ Distribute 컬럼을 확인하면 어떤 방식이 쓰였는지 알 수 있다.
HASH,BROADCAST,NONE(Partition-Wise Join 시) 등으로 표시된다.
주요 방식 상세 설명
1. Hash 분배
-
장점: 데이터를 균등하게 분산시킬 수 있어 병렬 처리 효율이 높다.
-
단점: 해시 연산 비용이 발생하며, 특정 값에 데이터가 쏠려 있으면(Data Skew) 특정 슬레이브만 과부하가 걸릴 수 있다.
2. Broadcast 분배
-
장점: 대형 테이블(Outer)을 굳이 재배치(Shuffle)할 필요가 없어 네트워크나 메모리 부하를 줄일 수 있다.
-
단점: 복제되는 테이블이 크면 모든 프로세스의 메모리를 점유하므로 과부하가 발생한다. (메모리 부족 시 Temp 테이블 사용)
3. Partition-Wise Join (Key 분배 기반)
-
설명: 두 테이블이 동일한 파티션 키로 나누어져 있다면, 서로 매칭되는 파티션끼리만 병렬로 조인하면 된다.
-
효과: 데이터 재배치 과정이 완전히 생략되므로 병렬 조인 중 성능이 가장 좋다.