CS전공지식 - 4.7 조인의 원리

KIM HYUNMIN·2024년 10월 23일

CS 기초지식

목록 보기
13/13

1) 중첩 루프 조인
2) 정렬 병합 조인
3) 해시 조인

1. 중첩 루프 조인 (Nested Loop Join)

중첩 루프 조인은 가장 기본적인 JOIN 알고리즘입니다. 두 테이블을 결합할 때, 외부 테이블의 각 행에 대해 내부 테이블을 반복하면서 일치하는 값을 찾습니다. 쉽게 말해, 두 테이블을 중첩된 반복문으로 비교하는 방식입니다.

장점

  • 간단한 구현
  • 작은 데이터셋에 적합

단점

  • 성능 저하: 두 테이블 중 하나가 커질수록 성능이 급격히 저하 됩니다.

2. 정렬 병합 조인 (Sort-Merge Join)

정렬 병합 조인은 두 테이블의 JOIN 조건에 사용된 컬럼이 정렬되어 있을 때 사용하는 조인 방법입니다. 두 테이블이 모두 정렬된 상태라면, 한 번의 순차적 비교만으로도 일치하는 값을 빠르게 찾을 수 있습니다. 이 알고리즘은 데이터를 정렬한 다음, 두 테이블을 병합하여 조인하는 방식입니다.

장점

  • 정렬된 데이터에 매우 효율적
  • 대규모 데이터 셋에 적합

단점

  • 정렬비용
  • 비교적 복잡한 구현

3. 해시 조인 (Hash Join)

해시 조인은 두 테이블 간의 조인을 수행할 때, 해시 테이블을 사용하여 빠르게 일치하는 값을 찾는 알고리즘입니다. 보통 해시 조인은 대규모의 데이터를 다룰 때 매우 효율적입니다. 두 테이블 중 작은 테이블을 기준으로 해시 테이블을 생성한 뒤, 다른 테이블과 비교하여 일치하는 행을 찾습니다.

장점

  • 대규모 데이터셋에 적합
  • 정렬 필요 없음

단점

  • 메모리 사용량: 해시 테이블을 메모리에 생성하므로, 메모리 사용량이 많이 필요, 메모리에 올릴수 없을 정도라면 디스크를 사용하는 비용이 발생합니다.

  • 인덱스가 없는 경우 유리하지만 사용하는 경우에는 다른 조인 방법이 더 나을 수 있습니다.

    해시 조인에서 빌드 단계프로브 단계는 해시 조인의 두 가지 주요 단계가 있습니다.

1. 빌드 단계 (Build Phase)
빌드 단계는 두 테이블 중 하나(일반적으로 작은 테이블)를 선택하여 해시 테이블을 생성하는 단계입니다. 이 테이블의 JOIN 조건에 사용되는 컬럼을 기준으로 해시 값을 계산하여, 이 컬럼의 데이터를 해시 테이블에 저장합니다.

2. 프로브 단계 (Probe Phase)
프로브 단계는 빌드 단계에서 생성한 해시 테이블을 이용해 다른 테이블의 데이터와 매칭하는 단계입니다. 이 과정에서 해시 테이블과 일치하는 데이터를 찾기 위해 두 번째 테이블의 데이터를 읽고, 그 값을 해시 테이블에서 조회하여 조인 조건에 맞는 데이터를 찾아냅니다.

profile
Linux,Window,Network,docker,kubernets

0개의 댓글