오라클에서 통계정보를 생성하는 이유는 오라클에있는 옵티마이저기능을 최적화하기 위함입니다.
이 옵티마이저가 최적화 되기 위해서는 기초데이터가 되는것이 통계정보 입니다.
ANALYZE란 명령어를 통해서 인덱스,테이블, 클러스터의 통계정보를 생성할 수 있습니다.
ANALYZE를 하기되면 통계정보를 생성후 데이터 사전에 저장합니다.
통계정보를 생성하지 않으면 인덱스가 있더라도 그리많은 효과를 보지 못 할수도 있습니다.
제대로된 인덱스를 찾지 못하기 떄문입니다. 왜냐하면 옵티마이저가 찾을 기초데이터가 없기 때문입니다.
그래서 ALALYZE를 통해서 통계정보를 생성해야만 최적화된 인덱스를 잡아내서 최대한의 효과를 볼 수 있기 떄문입니다.
COSE BASE로 OPTIMIZER가 운영중인 환경에서는 처음 생성 후
ANALYZE해 주시는 것이 옵티마이저를 최적화해주는데 큰 도움을 줄 수 있다.
아래는 ANALYZE명령어 사용법입니다.
[문법]
--------------------------------------------------------------------------------------------
ANALYZE object-clause operation STATISTICS
[VALIDATE STRUCTURE[CASCADE]]
[LIST CHAINED ROWS[INTO tables]]
object-clause : TABLE,INDEX,CLUSTER중에서 해당하는 오브젝트를 기술하고 처리할 오브젝트명을
기술합니다.
operation : operation옵션에서 아래 3가지중 한가지 기능을 선택할 수 있습니다.
1) COMPUTE - 각각의 값들을 정확하게 계산 합니다.
- 가장 정확한 통계를 얻을 수 있지만 처리 속도가 가장느립니다.
2) ESTIMATE - 자료사전의 값과 데이터 견본을 가지고 검사해서 통계정보를 예상합니다.
- COMPUTE보다 덜 정확하지만 처리속도가 훨씬 빠릅니다.
3) DELETE - 데이블 모든 통계정보를 삭제합니다.
--------------------------------------------------------------------------------------------
테이블 재생성하거나 새로 클러스터링을 한 경우 인덱스를 추가하거나 재생성한 경우
다량의 데이터를 SQL이나 배치 어플리케이션을 통해 작업한 경우 ANALYZE를 수행 시켜 주는것이
좋습니다. 테이블 ANALYZE시킨다면 거기에따른 인덱스들도 같이 실시하는것이 좋습니다.
[특정 COLUMN에 대한 DATA분포]
SQL > ANALYZE TABLE ON_TBX_CME_FNO_ORD COMPUTE STATISTICS FOR ALL INDEXED COLUMNS;
[특정 Table/Index만 Analyze하는 방법]
SQL > ANALYZE TABLE [TABLE_NAME] COMPUTE STATISTICS;
SQL > ANALYZE INDEX [INDEX_NAME] COMPUTE STATISTICS;
[삭제]-새로운정보 구하기 전에 기존 정보를 삭제할 때 이용
SQL > ANALYZE TABLE [TABLE_NAME] DELETE STATISTICS;
SQL > ANALYZE iNDEX [INDEX_NAME] DELETE STATISTICS;