[DB/SQL] 조인튜닝 - 소트머지조인

songeunm·2025년 8월 26일

DB & SQL

목록 보기
27/27

[친절한 SQL 튜닝] 4. 조인튜닝

🎱 SGA vs. PGA

  • SGA (System/Shared Global Area)
    • 공유 메모리 영역
    • 여러 프로세스가 공유 가능 but 동시에 액세스 불가한 데이터 저장
    • 프로세스 간 액세스를 직렬화 > 래치 메커니즘
  • PGA (Process/Program/Private Global Area)
    • 서버 프로세스에 할당된 메모리 영역
    • 프로세스에 종속적인 고유 데이터 저장
    • 래치 메커니즘 불필요, 빠름

🎱 기본 메커니즘

  • 단계
    • 소트 단계

      • 각각 테이블에서 조건에 맞는 데이터를 읽어 조인컬럼을 기준으로 정렬
    • 머지 단계

      • 정렬된 테이블A를 스캔 > 조인 컬럼을 기준으로 매칭되는 테이블B의 데이터에 액세스
      • 조인 실패 시까지 테이블B 스캔 > 실패시 테이블 A로 돌아감
      • 정렬 덕에 테이블B를 풀스캔 X

      → Sort Area에 저장한 데이터 자체가 인덱스 역할 > 조인 컬럼에 인덱스가 없어도 사용 가능

🎱 특징

  • NL조인은 매번 DB버퍼캐시(SGA)를 통해 데이터를 읽어 조인

    래치 획득 필요, 느림

  • 반면 소트머지조인은 조인 대상 집합을 일괄로 읽고 > PGA에 저장 후 조인

    래치 획득 과정 없음, 빠름

  • 소트머지조인도 조인 대상 집합을 읽을 때는 DB버퍼캐시 경유
  • 사용되는 상황
    • 조인 조건식이 등치(=) 조건이 아닌 대량 데이터 조인
    • 조인 조건식이 아예 없는 조인 (Cross Join, 카테시안 곱)
profile
데굴데굴 구르는 개발자 지망생

0개의 댓글