Optimizing Oracle Optimizer (2011년)
Auto vs. Skewonly 0 0 2,361

by 구루비스터디 Histogram [2018.07.14]


Auto vs. Skewonly

  • DBMS_STATS Package의 METHOD_OPT Parameter에서 AUTO와 SKEWONLY 옵션은 Oracle이 Data의 분포를 고려하여, Bucket Size를 결정하는것은 동일하나, AUTO는 해당 Column이 Where절에서 Predicate로 사용된 적이 있는 경우에만 Histogram을 수집
  • 특정 Column이 Predicate로 사용되었는지 여부는 SYS.COL_USAGE$VIEW에서 관리된다.


METHOD_OPT Parameter의 Default 값FOR ALL COLUMNS SIZE AUTO


오해할 수 있는 Histogram에 의한 성능문제 예
문제 상황
  1. Table 및 기타 Object들을 재생성한 후 Data Load
  2. 통계정보 생성(DBMS_STATS.GATHER_SCHEMA_STATS Procedure)
  3. Query들의 전반적인 성능들을 측정(수행시간:T1)
  4. 통계정보 재생성(DBMS_STATS.GATHER_SCHEMA_STATS Procedure)
  5. Query들의 전반적인 성능들을 측정(수행시간:T2)


문제 발생
  • Data의 변화가 없으므로, T1 == T2이어야 하나, 실제는 그렇지 않을수 있음
  • deault 가 AUTO 인 관계로 첫번째 통계정보를 수집할때는 Query가 수행된 적이 없으므로 Histogram이 수집되지 않음, 두번째 통계정보 수집시에는 성능측정을 위해 Query들을 수행했으므로 Histogram이 수집될 확룔이 높음


첫번째 수행시간 T1을 T2로 맞추려면
  1. DBMS_STATS.GATHER_SCHEMA_STATS Procedure에서 METHOD_OPT Parameter를 SKEWONLY로 변경
  2. 두번째 수집한 통계정보를 Export후 Import
  3. 두번째 수집한 통계정보에서 각 Histogram의 Bucket Size를 알아낸 후, 그 값을 첫번째 통계정보 수집에서 사용


  • 10g부터는 자동 통계 수집에 의해 의도와 무관하게 Histogram이 생성되는 경우가 많아 주의 요망
"데이터베이스 스터디모임" 에서 2009년에 "OPTIMIZING ORACLE OPTIMIZER " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3960

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입