DBMS_STATS

1. 종류

  • GATHER_INDEX_STATS: 인덱스 통계 정보 생성
  • GATHER_TABLE_STATS: 테이블과 테이블 내 컬럼(및 인덱스) 통계정보 생성
  • GATHER_SCHEMA_STATS: 해당 스키마 내 모든 객체들의 통계 정보 생성
  • GATHER_DATABASE_STATS: DB내의 모든 객체들의 통계정보 생성
  • GATHER_SYSTEM_STATS: 시스템 통계정보 생성

2. Parameter

  • ownname: 스키마 이름
  • indname: 인덱스 이름
  • partname: 파티션 이름
  • tabname: 테이블 이름
  • interval: 지정된 분 동안의 DB실시간 SGA 사용량의 의거한 통계정보 생성 (Gathering_mode='INTERVAL'일때만 사용 가능)
  • estimate_percent: 통계될 ROW의 VJTPSXM WJDDML(100~0.0000001)
  • degree: 병렬 처리 개수 설정
  • granularity: 해당 객체가 파티션 화 되어 있을시에만 사용
    • ALL: global, partition, subpartition
    • DEFAULT: global및 partion 레벨의 통계정보
  • cascade: 테이블 대상 시에 해당 테이블의 모든 인덱스에 대해서도 통계 정보 생성 이때 인덱스 통계 정보는 병렬사용불가

 BEGIN
      dbms_stats.gahter_table_stats( ownname    => 'HAPPY',
                                     tabname    => 'TESTTABLE',
                                     estimate_percent => 1,
                                     method_opt => 'FOR ALL INDEXED columns',
                                     degree     => 8
                                     granularity => 'ALL'
                                     cascade     => true);
 END;
 

3. 활용예시

낮과 밤이 DB가 하는 일이 다른경우

  • 낮: OLTP성 트랜잭션 처리

BEGIN 
DBMS_STATS.GATHER_SYSTEM_STATS( 
             gathering_mode => 'interval', 
             interval => 720, 
             stattab => 'mystats', 
             statid => 'OLTP'); 
END; 
/

  • 밤: OLAP 레포트 생성

BEGIN 
DBMS_STATS.GATHER_SYSTEM_STATS( 
             gathering_mode => 'interval', 
             interval => 720, 
             stattab => 'mystats', 
             statid => 'OLAP'); 
END; 
/

낮과 밤에 각각에 맞는 시스템통계를 적용한다.


BEGIN 
  DBMS_STATS.IMPORT_SYSTEM_STATS('mystats', 'OLTP'); 
END; 
/


BEGIN 
  DBMS_STATS.IMPORT_SYSTEM_STATS('mystats', 'OLAP'); 
END; 
/

이렇게 각각에 상황에 맞는 통계를 적용하게 되면 CBO는 실제 System 상황에 맞는 실행계획을 세운다.

참고하면 자료: http://wiki.gurubee.net/pages/viewpage.action?pageId=3342613

참고한자료 출처: http://blog.naver.com/bluekisunny?Redirect=Log&logNo=120051863976