병렬 조인 분배

분배 방식특징동작 원리적합한 상황
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 분배 기반)

  • 설명: 두 테이블이 동일한 파티션 키로 나누어져 있다면, 서로 매칭되는 파티션끼리만 병렬로 조인하면 된다.

  • 효과: 데이터 재배치 과정이 완전히 생략되므로 병렬 조인 중 성능이 가장 좋다.