Cute Light Pink Flying Butterfly 옵티마이저 조인 Optimizer Join :: 놀면서 돈벌기
본문 바로가기
license/SQLD 데이터개발자

옵티마이저 조인 Optimizer Join

by 왓츠뉴 whatsnew 2024. 11. 3.
반응형

1. NLJ(NESTED LOOPS JOIN) 중첩 루프 조인

  • 중첩 for문의 원리로 조인을 하는 방법
  • 선행테이블(외부테이블, Driving Table, Outer Table)을 선 조회하여 연결 대상 데이터를 찾고, 그 다음 테이블(내부 테이블, Driven Table, Inner Table)을 연결
  • 선행 테이블의 처리범위에 따라 처리량이 결정됨(선행테이블의 크기가 작은것을 찾아야 함)
  • row간의 처리, table간의 처리가 모두 순차적으로 일어남
  • 최적의 순서를 찾아주는 것이 중요
  • RANDOM ACCESS 발생(Driving에서 Driven을 참조할 때 발생)
  • 성능지연을 줄이기위해 RANDOM ACCESS가 적은양이 발생하도록 해야함
  • 선행테이블 범위가많거나 연결테이블에서 랜덤액세스가 많아지면 SORT MERGE JOIN보다 불리
  • INDEX가 필요함, Unique Index시 유리함
  • 온라인 트랜잭션 처리(OLTP)에 유용 💡

 

2. SORT MERGE JOIN

  • 두 테이블을 각각 정렬하고 완료되면 병합(SORT)
  • 정렬이 발생하기 때문에 데이터양이 많은 경우에는 느려지고 성능 저하
  • 정렬 대상이 많을경우 임시디스크를 사용해서 성능이 저하됨 
  • EQIU JOIN, NON-EQUI JOIN 모두 가능 💡

3. HASH JOIN

  • 두 테이블 중 작은테이블을 HASH메모리에 로딩하고, 두 테이블의 조인 키를 사용해 테이블 생성 💡
  • 두 테이블을 동시 스캔
  • 선행 테이블에는 작은데이터가 먼저(선행테이블이 충분히 메모리에 로딩되어야 함)
  • 시스템자원을 최대한 활용가능하며, 또는 너무 많이 사용될 우려도 있음 💡
  • 대용량처리에 빠른 처리속도 
  • EQUI JOIN에서만 가능 
  • INDEX를 사용하지 않음 
  • 해시함수를 사용해 주소를계산하고, 해당주소로 테이블을 조인하기 때문에 CPU연산을 많이 한다
728x90
반응형