Presto (4)

고선욱·2023년 9월 22일
0

Presto

목록 보기
4/4

Cost-based optimizations

  • 통계를 사용하여 특정 쿼리에 대한 다양한 실행 계획의 비용을 추정하는 쿼리 최적화 유형
  • CBO는 예상 비용이 가장 낮은 계획을 선택
  • 데이터에 따라 달라짐
  • 아래와 같은 요소에 대해 최적화가 가능
    • CPU
    • 메모리 요구사항
    • 네트워크 재편성
    • Skew 회피
  • 비용 최적화 기법
    • 조인 유형 선택: Partitioned vs Broadcast
    • 조인 재정렬: 조인이 수행되는 순서를 재정렬하여 쿼리 비용 감소

Partitioned join

  • Partitioned join은 두 테이블을 조인 키에 따라 분할하여 조인을 수행
  • 각 노드에서 분할된 테이블을 조인하여 결과를 생성
  • 장점
    • 네트워크 트래픽을 줄일 수 있음
    • 조인 키에 따라 데이터가 분할되어 있으므로 조인을 더 효율적으로 수행할 수 있음
  • 단점
    • 조인 키에 따라 데이터를 분할해야 하므로 조인 키가 적절하게 선택되어야 함
    • 조인 키에 따라 데이터가 고르게 분할되지 않을 경우 성능이 저하될 수 있음
-- set session join_distribution_type = 'PARTITIONED' 

Broadcast join

  • Broadcast join은 작은 테이블을 모든 노드로 브로드캐스트하여 조인을 수행
  • 모든 노드에서 조인을 수행하여 결과를 생성
  • 장점
    • 네트워크 트래픽을 크게 줄일 수 있음
    • 작은 테이블을 조인하는 경우 매우 효율적
  • 단점
    • 큰 테이블을 조인하는 경우 효율적이지 않을 수 있음
    • 작은 테이블을 모든 노드로 브로드캐스트해야 하므로 메모리 사용량이 증가할 수 있음
-- set session join_distribution_type = 'BROADCAST' 

Partitioned join과 Broadcast join의 선택

  • 조인 키에 따라 데이터가 분할되어 있는지 여부
  • 조인되는 테이블의 크기
  • 조인되는 테이블의 분포

Join reordering

  • 쿼리에서 조인이 수행되는 순서를 재정렬 하여 쿼리 비용을 감소
-- set session join_reordering_strategy = 'NONE'

Reference

profile
3년차 데이터 엔지니어입니다😁

0개의 댓글

관련 채용 정보