제4장 시스템 진단과 튜닝(통계정보 생성)

4.5.1. 목적

  • Cost based optimizer의 비용계산
  • 각 Object의 구조 검증
  • Chain 생성 여부 확인을 통한 시스템저장공간 관리

4.5.2. 사용방법

4.5.2.1. ANALYZE

ANALYZEobject(TABLE, INDEX, CLUSTER..)
operationCOMPUTE정확한 통계값 제공, 전체 테이블을 ACCESS 하여 수집 계산하여 가장 많은 시간이 소요된다.
ESTIMATEData Dictionary와 데이터 견본으로 산정
DELETE모든 통계정보 삭제
STATICSVALIDATE STRUCTURE오브젝트 구조 검증
LIST CHANED ROWSTABLE, CLUSTER의 체인 로우 확인 및 보정
FOR TABLE FOR ALL...컬럼 히스토그램 정보 생성

4.5.2.2. DBMS_STATS

  • 통계 테이블의 생성 및 삭제
    • Analyze 구문은 datadictionary의 정보를 지우고 새로이 통계정보를 갱신하는 단점을 보완하기 위해 DBMS_STATS에서는 CREATE_STAT_TABLE, DROP_STAT_TABLE를 지원하고 있다
    • 통계 테이블 생성

 DBMS_STATS.CREATE_STAT_TABLE(
 ownname VARCHAR2,
 stattab VARCHAR2,
 tblspace VARCHAR2 DEFAULT NULL);
 
    • 통계 테이블 삭제

 DBMS_STATS.DROP_STAT_TABLE(
 ownname VARCHAR2,
 stattab VARCHAR2 );
 
  • 옵티마이저 용 통계 정보 생성
    • 프로시저를 사용하여 특정 범위의 통계정보를 옵티마이저 용으로 생성 할 수 있다.
  • 통계정보의 이동
    • IMPORT: USER의 통계테이블=>DATA DICTIONARY

IMPORT_COLUMN_STATS
IMPORT_INDEX_STATS
IMPORT_SYSTEM_STATS
IMPORT_TABLE_STATS
IMPORT_SCHEMA_STATS
IMPORT_DATABASE_STATS
 
    • EXPORT: DATA DICTIONARY=>USER의 통계테이블

EXPORT_COLUMN_STATS
EXPORT_INDEX_STATS
EXPORT_SYSTEM_STATS
EXPORT_TABLE_STATS
EXPORT_SCHEMA_STATS
EXPORT_DATABASE_STATS
 

4.5.3. DataDictionary

USER_TABLES총 로우의 수
총 블록의 수
비어 있는 블록에 쓰여질 수 있는 빈 공간의 평균
체인이 발생된 로우의 수
로우의 평균 길이
USER_COLUMNSDistinct한 값의 수
히스토그램 정보
USER_INDEXES인덱스의 Depth
Leaf block의 개수
Distinct Key의 수
Leaf Blocks/Key의 평균
Data Block/key의 평균
Clustering Factor
가장 큰 Key의 값(compute지정시)
가장 작은 Key의 값(compute지정시)
USER_CLUSTERCluster Key당 길이의 평균

4.5.4. 실행사항

  • 주기적인 ANALYZE작업 수행
  • 총 로우 수가 많은 테이블은 작업주기를 길게 한다
  • 해당 오브젝트와 연관있는 모든 오브젝트들을 동시에 작업한다. 프로시저로 작업을 수행한다.
  • 테이블을 재생성하거나 새로 클러스트링한 경우 ANALYZE한다.
  • 인덱스를 추가 혹은 재생성한 경우 ANALYZE한다.
  • SQL이나 배치 Job을 통해 다량의 데이터를 입력한 경우 ANALYZE한다.

문서에 대하여