데이터베이스 조인(JOIN) – Hash Join의 개념과 장단점

데이터베이스 조인(JOIN) – Hash Join의 개념과 장단점


데이터베이스 관리 시스템(DBMS)을 사용하면서 우리는 자료의 다양한 처리를 위해 여러가지 조인 알고리즘을 사용할 수 있습니다. 그 중 해시조인”Hash Join”은 Nested Loops 조인과 Sort Merge 조인에 비해 더 효율적인 처리를 제공하며, 데이터양이 작은 테이블을 주로 처리하는데 적합한 알고리즘입니다. 이번 글에서는 Hash Join의 개념과 장단점에 대해 알아보겠습니다.

데이터베이스 조인(JOIN) - Hash Join의 개념과 장단점

Hash Join

Hash Join은 데이터 처리의 개선사항이 필요할 경우 유용하게 사용되는 조인 알고리즘 중 하나인데요, 두 테이블 간의 조인 작업을 수행하기 위해 해시 함수를 하며 이 때문에 “Hash”라는 이름이 붙었다고 합니다.

기존의 Nested Loops 조인은 인덱스 사용에 따른 랜덤 액세스 오버헤드와, Sort Merge 조인은 정렬 작업에 따른 오버헤드가 발생할 수 있었는데요, 그러나 해시 조인은 이에 비해 각 테이블에 대한 독립적인 처리를 유지하면서도, Driving Table을 활용하여 조인을 수행 할 수 있습니다.

Hash Join의 특징

  1. 비교적 작은 테이블을 Driving Table로 사용 – Hash Join은 작은 테이블을 Driving Table로 활용함으로써 성능을 최적화 할 수 있습니다, 이는 HASH_AREA_SIZE로 결정되며, 메모리 내에 Hash Bucket을 저장합니다.
  2. Hash Algorithm 활용 – 각 테이블의 데이터를 Hash Algorithm을 통해 처리하고 조인하기 위한 연결고리를 구성합니다.
  3. Oracle에서의 활용 – Hash Join은 Oracle 7.3 버전부터 소개되었으나, 8 버전 이후에 점점 더 많이 사용되고 있습니다.

Hash Join의 장단점

장점

  • CBO 모드에서 옵티마이저가 자동으로 판단하여 적용 가능함(통계 정보가 필요)
  • Equi Join에서만 사용 가능하며, 주로 OLTP 시스템 및 데이터웨어하우스에서 활용

단점

  • 많은 CPU와 메모리 자원이 필요하므로, 성능이 좋은 하드웨어 환경
  • 조인 집합에 Hash Bucket을 구성하기 위해 많은 메모리와 CPU 자원이 소모 됨.
  • 하드웨어 자원 부족 시 디스크 I/O가 발생하여 성능 저하 가능성이 있음.

맺으며

Hash Join은 Nested Loops와 Sort Merge 조인에 비해 작은 테이블을 주로 다루는 상황에서 더욱 효율적인 데이터 처리를 제공하는 조인 알고리즘이기는 하지만, 많은 CPU와 메모리 등 하드웨어의 높은 성능 및 자원을 요구하므로 하드웨어 환경을 충분히 고려하여 적절하게 활용해야 합니다. 그리고 데이터 처리에 있어서 어떠한 조인 알고리즘을 선택 하느냐에 따라, 성능 향상에 큰 영향을 미치므로, 주어진 상황에 맞게 최적의 알고리즘을 선택하는 것또한 관리자의 역량이라 할 수 있습니다.

이전 글 – [오라클] 조인 INNER JOIN(EQUI JOIN과 NON-EQUI JOIN)에 대해 알아보자

이전 글 – 오라클 OUTER JOIN 3가지 종류에 대해 알아보자(LEFT, RIGHT, FULL)

Leave a Comment