카테고리 없음

조인 (2) - 물리적 조인

ㅈㅣ니 2024. 7. 21. 09:43

이번시간에는 물리적 조인에 대해 알아보는 시간을 가져볼 것이다.

 

물리적 조인 ( Physical Join)이란?

  • DBMS에 의해 내부적으로 발생하는 테이블 결합 방식이다.

 

물리적 조인을 처리하기 위한 방법으로는 다음과 같은 3가지 방식이 있다.

  • Nested Loop Join (NL Join)
  • Merge Join
  • Hash Join

 

Nested Loop Join ( NL Join ) 이란?

  • 중첩된 반복 조인이다.
  • 선행 테이블의 결과 집합을 한 건씩 후행 테이블에 조인하고 이를 반복하여 최종 결과 집합을 만들어낸다.
  • 선행 테이블의 결과 집합 건수만큼 조인이 반복되기 때문에 결과 집합의 크기에 따라 조인의 전체 일량이 결정된다.

 

 

NL Join의 SQL 구문 및 처리 과정

SELECT e.ENAME, e.Sal, d.DName
FORM Dept d INNER LOOP JOIN EMP e
ON d.Deptno = e.Deptno
WHERE d.Deptno = 20 AND e.Sal > 2000

 

[처리 과정]

  1. Dept 테이블의 Deptno = 20 조건에 만족하는 데이터를 index_Detpno 인덱스로 인덱스로 범위를 탐색한다.
  2. index_deptno 인덱스로부터 탐색한 행의 RID 값으로 dept 테이블에 RID Lookup을 수행한다.
  3. 조인 조건인 deptno 열을 기준으로 emp 테이블의 index_emp 인덱스와 조인한다.
  4. 조인된 결과에서 index_emp 의 RID 값으로 emp 테이블에 RID Lookup을 수행한다.
  5. 조인된 결과 집합에서 emp 테이블의 조건인 sal > 2000을 만족하는 데이터만 운반 단위에 전달한다.
  6. 1 에서 탐색한 행의 수만큼 2~5 과정을 반복하여 최종 결과 집합을 출력한다.

 

 

Merge Join 이란?

  • 두 테이블의 처리 범위 내에서 조인 키를 기준으로 정렬한 다음 병합하는 과정으로 조인
  • 조인할 때 정렬을 선행으로 하게 되는데, 인덱스를 통해 미리 정렬된 데이터를 사용한다면 이 과정은 생략할 수 있다.

 

Merge JOin의 SQL 구문 및 처리 과정

SELECT e.EName, e.Sal, d.DName
FROM Dept d INNER MERGE JOIN Emp e
ON d.Deptno = e.Deptno
WHERE d.Deptno > 20 AND e.Sal > 2000

 

 

[처리과정]

  1. Dept 테이블에서 Deptno>20 조건에 만족하는 데이터를 찾고 조인 조건인 Deptno 열로 정렬을 수행한다.
  2. Emp 테이블에서 Sal>2000 조건에 만족하는 데이터를 찾고 Deptno 열을 기준으로 정렬을 수행한다.
  3. Deptno로 정렬된 데이터를 기준으로 마지막 값을 만날 때까지 스캔하면서 최종 결과 집합을 출력한다.

 

 

Hash Join 이란?

  • 해시함수를 적용하여 조인하는 방식이다.
  • 조인할 때 선행으로 읽어내는 테이블을 빌드 입력 (Build Input), 후행으로 읽는 테이블을 프로브 입력 (Probe Input)이라 한다.
  • 빌드 입력은 해시함수를 적용하여 해시 테이블을 생성하고 프로브 입력의 값을 해시함수로 적용하면서 해시 테이블에 조인한다.
  • 해시 테이블을 생성할 때 메모리를 사용하게 되는데 메모리만 사용하여 처리할 경우에는 인메모리 해시 조인, 메모리 부족으로 디스크 영역까지 사용하게 되면 유예 해시 조인이라고 한다.

 

Hash Join 하는 SQL 구문 및 처리 과정

 

SELECT e.EName, e.Sal, d.DName
FROM Dept d INNER HASH JOIN Emp e ON d.Deptno = e.Deptno
WHERE d.Deptno >  20 AND e.Sal > 2000

 

[처리 과정] 

  1. Dept 테이블의 Deptno > 20 조건에 해당하는 행을 index_DeptNo 인덱스로 탐색한 후 해시함수를 적용하여 해시 테이블을 생성한다.
  2. Emp 테이블에서 Sal > 2000 조건에 해당하는 행을 해시함수를 적용하면서 해시테이블에 조인한다.
  3. 조인에 성공한 행은 최종 결과 집합에 포함하여 Emp 테이블의 행이 모두 비교될 때까지 2를 반복한다.

 

반응형