[ Oracle - Analyze  ]

 

☞ 정의 : SQL은 RULE-BASED나 COST-BASED중 하나를 이용해서 기동된다.기존의 소프트웨어는 RULE
          BASED 방식을 채택하고 있다. 그리고 많은 오라클 소프트웨어가 이러한 방식을 오랫동안
          사용해 왔다.
          그러나 새로 출시된 소프트웨어에 대해서는 COST BASED 방식의 OPTIMIZER를 고려해야 한다.
          오라클은 새로 출시되는 프로그램을 COST BASED방식으로 업그레이드 시켜왔으며 이러한
          방식은 시스템을 훨씬 더 안정적으로 만들었다. 만약 COST BASED방식의 OPTIMIZER를
          사용한다면 반드시 ANALYZE 스키마를 정기적으로 사용해야 한다. ANALYZE스키마는
          데이터베이스 통계를 데이터 사전 테이블에 기록하는 역할을 수행하며 그렇게 되면
          COST BASED OPTIMIZER가 그것을 사용하게 된다.

1. ANALYZE

 

- ANALYZE는 인덱스, 테이블, 클러스터의 통계정보를 생성 합니다.

- ANALYZE가 생성한 통계정보들은 비용기준(Cost-based)의 옵티마이저가 가장 효율적인
  실행계획을  수립하기 위해 최소비용을 계산할 때 사용 됩니다.

- 각 오브젝트의 구조를 확인하는 것과 체인(Chain) 생성 여부를 확인할 수 있으므로
  시스템의 저장공간 관리를 도와줍니다.  


2. ANALYZE 문법

 

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

- object-clause : TABLE, INDEX, CLUSTER중에서 해당하는 오브젝트를 기술하고 처리할
                  오브젝트 명을 기술 합니다.
- operation     : operation 옵션에는 다음 3가지중 한가지 기능을 선택할 수 있습니다.
  ◎ COMPUTE
       - 각각의 값들을 정확하게 계산 합니다.
       - 가장 정확한 통계를 얻을 수 있지만 처리 속도가 가장 느립니다.

  ◎ ESTIMATE
       - 자료사전의 값과 데이터 견본을 가지고 검사해서 통계를 예상합니다.
       - COMPUTE보다 덜 정확하지만 처리속도가 훨씬 빠릅니다.  

  ◎ DELETE
       - 테이블의 모든 통계 정보를 삭제 합니다.


3. ANALYZE 생성 통계정보(데이터 사전)

 

1. 테이블 : 총 로우의수, 총 블럭의 수, 비어있는 블럭에 쓰여질 수 있는 빈 공간의 평균,
            체인이 발생된 로우의 수, 로우의 평균 길이

2. 인덱스 : 인덱스의 깊이(Depth), Leaf block의 개수, Distinct Key의 수,
            Leaf Blocks/Key의 평균, Data blocks/key의 평균,
            Clustering Factor, 가장 큰 key 값, 가장 작은 key 값

3. 컬럼 : Distinct한 값의 수, 히스토그램 정보

4. 클러스터 : Cluster Key당 길이의 평균


4. ANALYZE 수행주기

  1. 주기적인 ANALYZE 작업을 수행 시켜 주어야 합니다.

2. 테이블을 재생성 하거나, 새로 클러스터링을 한 경우, 인덱스를 추가하거나 재생성한 경우,
    다량의 데이터를 SQL이나 배치 애플리케이션을 통해 작업한 경우 ANALYZE를
   수행 시켜 주는 것이 좋습니다.

3. 사용자는  USER_TABLES, USER_COLUMNS, USER_INDEXS, USER_CLUSTER 등의
    자료사전 뷰를 통해 정보를 확인할 수 있습니다  

4. 테이블을 ANALYZE 시킨다면 거기에 따르는 인덱스들도 같이 실시하는 것이 좋습니다.

5. ANALYZE 사용예

 

☞ 테이블 정보수집 예제
   SQL>
ANALYZE TABLE  emplyee COMPUTE STATISTICS ;

☞ 테이블 수집정보 삭제
   SQL> A
NALYZE TABLE  emplyee DELETE STATISTICS;

☞ 특정 컬럼에 대한 data 분포
    SQL>A
NALYZE TABLE emplyee COMPUTE STATISTICS FOR ALL INDEXED COLUMNS
;


6. ANALYZE 통계정보의 확인

  SQL>SELECT num_rows, blocks, empty_blocks, avg_space, chain_cnt, avg_row_len,            sample_size, last_analyzed
    
FROM   USER_TABLES
    
WHERE  table_name='CMS_CATEGORY';

SQL>
SELECT num_distinct, density, low_value, high_value, last_analyzed,column_name
    
FROM   USER_TAB_COL_STATISTICS
    
WHERE
 table_name='CMS_CATEGORY'


  

'(DB) Oracle > 튜닝 및 조작' 카테고리의 다른 글

Oracle - 여러 가지 조작  (0) 2017.01.22
Oracle - Lock List 보기 및 Lock 해제  (0) 2017.01.22
Oracle - DBA Scripts  (0) 2017.01.22
Oracle - Optimizer  (0) 2017.01.22
Oracle - HINT  (0) 2017.01.22
Posted by 농부지기
,