{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-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 시킨다면 거기에 따른 인덱스들도 같이 실시하는것이 좋다는것이다.