이번 포스팅에서는 여러 조인 방식 중에서 Sort-Merge Join에 대해 살펴보겠습니다. 실제 사례에서는 Sort Merge를 사용하는 경우는 많지 않습니다. 하지만 검색 방식이 적합 할 경우 다른 조인보다 확인이 좋은 성능을 나타냅니다. Sort Merge Join의 해당 기능, 장단점을 살펴보겠습니다.
Sort Merge Join이란
소트머지 조인은 데이터 정렬을 활용하여 정렬된 두 테이블의 행을 효율적으로 결합하는 조인 알고리즘입니다. Join Key를 기준으로 두 테이블을 모두 정렬해야 하는 다소 큰 데이터 세트를 조인할 때 특히 효과적입니다. 두개의 테이블에서 각각 Join 대상을 먼저 읽을 후 정렬하여 merge하는 방식입니다.
수행 과정
먼저 조인 키를 기준으로 두 테이블을 각각 정렬하는 작업을 합니다. 정렬이 완료되면 알고리즘은 동일한 조인 키를 사용하여 행을 비교하고 일치시켜 두 테이블을 병합합니다. 결과는 원하는 순서로 결합된 행이 있는 병합된 Result set입니다.
- Outer Table의 인덱스를 통해 테이블 찾기
- Outer Table을 Join 컬럼 기준으로 정렬
- Inner Table도 인덱스를 기준으로 테이블 찾기
- Inner Table을 Join 컬럼 기준으로 정렬
- 두 Table을 Join (PGA영역에서 진행)
Sort Merge Join의 특징
소트머지 조인은 PGA에서 수행되어 Random Access 부하가 없으나, 불필요한 Sorting요구되는 조인 방식입니다. 또한 아래와 같은 특징이 있습니다.
- Outer Table에 Sorting 대체할 Index 존재 시 정렬 미수행
- Inner Table은 Sorting 대체할 Index 존재해도 정렬이 수행됨
- Join 조건식이 등치 조건이 아닐 때에도 활용 가능
- 데이터를 순차적으로 처리하기 때문에 메모리에 완전히 들어가지 않는 테이블을 처리할 때 효율성이 특히 좋음
Sort Merge Join 고려사항
1. 인덱스 유무
- 효과적인 정렬을 위해서 조인 열에 인덱스가 있는지 확인필요(인덱스가 있어야 Sort 오버헤드를 크게 줄일 수 있음)
2. 메모리 관리
- 데이터가 대량일 때 Sort 단계에서 메모리 사용량을 모니터링하고 관리 필요(효율적인 메모리 관리는 전반적인 쿼리 성능에 영향을 미칠 수 있음)
장점
- PGA 영역에 두 Table을 모두 담는 경우 → 빠른 속도(Random Access 부하가 없으므로)
- Merge 시 이전 수행 범위는 제외하고 수행됨
단점
- Join과 직접적 연관 없는 Sorting이 요구된다는 점
'데이터아키텍처' 카테고리의 다른 글
[SQLD] 서브 쿼리(Sub Query) 개념 및 종류 (0) | 2023.12.04 |
---|---|
SQL Hash Join(해시 조인) - Build Input, Probe Input (1) | 2023.12.01 |
오라클 힌트(hint) 종류 및 사용법 (1) | 2023.11.29 |
SQL Nested Loop Join(조인) - Outer table, Inner table, Driving Table, Driven Table (2) | 2023.11.28 |
실행 계획 보는 법 - SQL 튜닝 (0) | 2023.11.27 |