출처 : http://wiki.oracleclub.com/pages/viewpage.action?pageId=327823
제 4 장 시스템 진단과 튜닝
5. ANALYZE ( 통계정보 생성 )
- 인덱스, 테이블, 클러스터의 통계정보를 생성시킨다.
- 비용기준(Cost_based) 옵티마이져가 가장 효율적인 실행계획을 수립하기 위해
최소비용을 계산할 때 사용된다.
[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. |
object-clause |
TABLE, 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 시킨다면 거기에 따른 인덱스들도 같이 실시하는것이 좋다는것이다.
| |