제 4 장 시스템 진단과 튜닝

5. ANALYZE ( 통계정보 생성 )

  • 인덱스, 테이블, 클러스터의 통계정보를 생성시킨다.
  • 비용기준(Cost_based) 옵티마이져가 가장 효율적인 실행계획을 수립하기 위해
    최소비용을 계산할 때 사용된다.

{section}{column:width=33%}

 
[syntax]

ANALYZE  object-clause operation  STATISTICS
         [ VALIDATE STRUCTURE [CASCADE] ]
         [ LIST CHAINED ROWS [INTO table] ]

실습 : SQL> analyze table TBL_OFFICE compute statistics for all indexed columns;

      Table analyzed.


{column}{section}

object-clauseTABLE, INDEX, CLUSTER 중에서 해당한 오브젝트 종류를
기술하고 뒤에있는 처리할 오브젝트 이름을 지정한다.
operation다음 중 한가지 기능을 선택할수 있다.
COMPUTE     각각의 값들을 정확하게 계산한다. 이 옵션은 가장
                    정확한 통계를 얻을 수가 있지만 가장 처리속도가 느리다
ESTIMATE    자료사전의 값과 데이터 견본을 갖고 검사해서 통계를 예상한다.
                    이 방법은 덜 정확한 정보를 주지만 훨씬 처리속도가 빠르다.
DELETE        테이블의 모든통계정보를 삭제한다.

이러한 정보들은 다음과 같은 통계자료를 만들어 자료사전 테이블(Data Dictionary Table)에 저장된다.

테 이 블인 덱 스컬   럼클 러 스 터
■ 총로우의 수
■ 총 블럭의 수
■ 비어있는 블럭에
  쓰여질 수 있는
  빈공간의 평균
■ 체인이 발생된
  로우의 수
■ 로우의 평균 길이
■ 인덱스의 깊이(Depth)
■ Leaf block의 개수
■ Distinct Key의 수
■ Leaf Blocks/key의 평균
■ Data blocks/key의 평균
■ Clustering Factor
■ 가장 큰 key의 값
   (Compute로 지정시만)
■ 가장 작은 key의 값
   (Compute로 지정시만)
■ Distinct 한
  값의 수
■ 히스토그램 정보
■ Cluster Key
  당 길이의 평균

사용자들은 USER_TABLES, USER_COLUMNS, USER_INDEXES,USER_CLUSTER등의 자료사전 뷰 를 통해 이를 확인할수있다.

실행계획을 수립할 때 필요한 적절한 통계정보를 제공하기 위해 실시하여야할 사항들

■ 주기적인 ANALYZE 작업을 수행시켜야한다.
     - 작업주기 : 테이블의 성격및 총 로우수에 따라 서로 다를 수 있다.
     - 추가적인 입력 및 수정.삭제가 적은 테이블은 한 번만, 혹은 몇 개월에 한 번씩 작업해도 무방할 것이다.
     - 많은 변화가 일어나는 테이블은 좀 더 빈번한 작업이 필요하다.
■ 거의 매일 작업을 해주지 않은 상태에서 액세스 경로에 변화가 많이 발생한다면
특정 액세스 경로로 수행도되록 사용제한을 하거나 힌트를 사용하여 액세스 경로를 고정시킬 필용가 있다.
■ 총 로우수가 많은 테이블은 ANALYZE 작업이 많은 부담이 될 수 있으므로 가능한 작업주기를 길게 할 필요가 있다.
■ 데이터의 양도 많으면서 액세스 유형도 다양하다면 앞서 언급했듯이 종합적인 인덱스 재구성과약간의 튜닝작업이 필요하다.
■ 테이블을 재생성하였거나 새로 클러스터링을 한 경우, 인덱스를 추가 혹은 재생성한 경우, 다량의 데이터를 SQL이나 배치작업을 통해 작업을 한 경우는 작업주기와 관계없이 ANALYZE 를 수행시켜 주는것이 좋다.
■ ANALYZE 작업은 해당 오브젝트의 전 계열을 동시에 작업해 주는 것이 필요하다
     - 예) 테이블을 ANALYZE 시킨다면 거기에 따른 인덱스들도 같이 실시하는것이 좋다는것이다.