728x90
# HISTOGRAM
l 히스토그램이란?
- 데이터의 분포도의 편차가 심한 emp100 테이블의 ename의 경우에는 히스토그램을 생성해야 한다. 그래야 실행계획이 정확해진다
- 통계정보 수집 : sampling 할 data를 담을 상자(버켓)를 1개
- 히스토그램을 수집 : sampling 할 data를 담을 상자(버켓)를 여러 개
- 중복된 데이터가 많은 경우를 표준편차가 크다고 표현하는데 이런 경우에는 버켓이 여러 개가 필요해서 히스토그램을 수집해야 한다
- 반면에 emp 테이블 같은 경우는 표준편차가 작다고 표현하는데 이런 경우는 버켓이 한 개로 충분하여 통계정보를 수집해야 한다
l 히스토그램 테스트
1. exec dbms_stats.delete_table_stats('SCOTT','EMP100'); 2. EXEC dbms_stats.gather_table_stats('SCOTT','EMP100',method_opt=> 'for all columns size 1'); - 버켓의 개수를 1개로 해서 수집 3. SELECT * FROM EMP100 WHERE ename='scott1'; SELECT * FROM EMP100 WHERE ename='scott99'; - 버켓 개수가 1개 이기 때문에 scott1이 있는지 모르고 대부분 scott99가 있는지 알고 있기 때문에 둘다 full scan을 수행한다 |
1. EXEC dbms_stats.gather_table_stats('SCOTT','EMP100',method_opt=> 'for all columns size 20'); - 버켓의 개수를 20개로 수행 2. SELECT * FROM EMP100 WHERE ename='scott1'; 3. SELECT * FROM EMP100 WHERE ename='scott99'; 4. EXEC dbms_stats.gather_table_stats('SCOTT','EMP100',method_opt=> 'for all columns size auto'); : 몇 개로 해야할지 잘 모르겠다면 auto 로 설정 |
'빅데이터과정 > SQL TUNING' 카테고리의 다른 글
#37_140805_TUNING_바인드 변수와 실행계획 (0) | 2014.08.05 |
---|---|
#37_140805_TUNING_실행계획과 통계정보 (0) | 2014.08.05 |
#37_140805_TUNING_DYNAMIC SAMPLING (0) | 2014.08.05 |
#37_140805_TUNING_MODEL 절 (0) | 2014.08.05 |
#36_140804_TUNING_STAR JOIN (0) | 2014.08.04 |