Innovating today, leading tomorrow

Tibero - 튜닝
[Tibero] SQL Tuning (13)

[Tibero] SQL Tuning (13)

본 문서에서는 상황에 따른 다양한 Tuning 사례를 안내 합니다.

3. JOIN 순서/방법

3.1. 힌트 추가

EXAMPLE

Join에서는 Left row 개수가 적을수록 처리가 용이합니다.
위 예제는 Left가 right 보다 row수가 많이 생성되므로 Leading 힌트를 사용합니다.

3.2. 힌트 반영 안되는 경우

Join별 알고리즘 특성을 파악해 알맞은 join을 사용합니다.

Join 별 알고리즘 특성

INDEX JOIN

  • NESTED LOOP의 index 버전입니다.
  • JOIN 왼쪽에서 row가 많이 올라올수록 loop 횟수가 증가합니다.
  • left row가 적게 올라올때 효과적입니다.

HASH JOIN

  • 양쪽 row가 많이 올라올때 INDEX JOIN보다 효과적입니다.

EXAMPLE

위 예제는 적용한 힌트가 반영되지 않고 Index Join으로 처리되고 있습니다.
이때 ‘Cardinality 힌트’를 사용해 Hash join을 유도합니다.

4. 통계 분포도

히스토그램 최대, 최소값 사이가 아닌 값이 조건문인 경우 입니다.

EXAMPLE

위 예제는 최대값보다 큰 영역이기에 1개를 예측했으나 실제는 많은 수가 존재합니다.
아래 방법을 참고해 해결합니다.

Optimizer의 영역 외 값 계산 기능
히스토그램에는 (1~100) 사이 값만 있어도 101에도 존재할 수 있음을 가정합니다.

_OPT_BOUND_SELEC_ADJUST_DEGREE
영역 바깥의 값에 대한 고려를 위한 기울기값으로 기본값은 0 입니다.
문제 발생시 100으로 설정을 변경합니다.