테이블 통계
- compute는 전수 검사, estimate는 표본 조사를 뜻한다.
- 통계정보를 수집할 때 이제는 analyze 명령어를 사용하지 말라는 것이 오라클의
공식적인 입장이다.
인덱스 통계
- 인덱스 통계 사용시 analyze, dbms_stats 를 사용하는 방법
- 인덱스를 최초 생성하거나 재생성할 때 아래와 같이 compute statistic 옵셥을 주면
자동으로 인덱스 통계까지 수집된다.
- 인덱스는 이미 정렬돼 있으므로 통계정보 수집에 오랜 시간이 소요되지 않는다.
- 10g부터는 사용자가 이 옵션을 명시하지 않아도 오라클이 알아서 인덱스 통계까지 수집한다.
컬럼 통계
- 테이블, 인덱스 통계를 제외하고 컬럼 통계만 수집하는 방법이다.
- size 옵션은 히스토그램의 최대 버킷 개수를 지정하는 옵셥으로서, 1부터 254까지 허용된다.
size를 명시하지 않으면 오라클이 75를 기본 값으로 사용하므로 히스토그램이 생성되지 않도록
하고 싶을 때는 size 옵션을 1로 명시해야 한다.
- 일부 컬럼에 대한 통계만 수집 가능하다.
( 히스토그램 버킷 개수를 컬럼별로 따로 지정할 수도 있다. )
- dbms_stats 패키지로 컬럼 통계만 따로 수집하느 방법은 없다.
( 테이블 통계와 항상 같이 수집된다. )
시스템 통계
- 시스템 통계가 포함하는 항목들
● CPU 속도
● 평균적인 Single Block I/O 속도
● 평균적인 Multiblock I/O 속도
● 평균적인 Multiblock I/O 개수
● I/O 서브시스템의 최대 처리량
● 병렬 Slave의 평균적인 처리량
- workload 시스템 통계
● 9i에서 처음 도입된 workload 시스템 통계는, 애플리케이션으로부터
일정 시간 동안 발생한 시스템 부하를 측정, 보관함으로써
그 특성을 최적화 과정에 반영할 수 있게 한 기능이다.
● NoWorkload 시스템 통계는 오라클이 무작위로 I/O를 발생시켜 측정한 값이 반면
Workload 시스템 통계는 실제 애플리케이션에 발생하는 부하를 측정한 값이다.
- NoWorkload 시스템 통계
● 관리자가 명시적으로 선택하지 않더라도 CPU 비용 모델이 기본 비용 모델로 사용되게
하려고 오라클 10g에서 NoWorkload 시스템 통계를 도입하였다.
CPU 비용 모델은 시스템 통계가 있을 때만 활성화되기 때문이다.
● Workload 시스템 통계를 수집하고 반영하는 순간 NoWorkload 시스템 통계는 무시된다.
Workload 시스템 통계가 수집되기 전까지는 공식을 이용해 추정된 값을 사용한다.
● NoWorkload도 Workload와 마찬가지로 부하를 준 상태에서 측정된 값을 사용해야
시스템 통계로서 의미가 있다.
● Workload는 실제 애플리케이션에서 발생하는 부하를 기준으로 각 항목의 통계치를
측정하는 반면 NoWorkload는 모든 데이터파일 중에서
오라클이 무작위로 I/O를 발생시켜 통계를 수집한다.
● NoWorkload 시스템 통계를 수집할 때는 dbms_stats_gather_system_stats 프로시저를
아무런 인자도 주지 않고 호출하거나 gathering_mode 인자를 'NOWORKLOAD' 로
지정하면 된다.
● 이 프로시저를 실행하는 동안 I/O 서브시스템에 약간의 부하가 발생하며, I/O 성능과
데이터베이스 크기에 따라 적게는 수초, 길게는 수 분이 소요될 수 있다.
'ORACLE > SQLP' 카테고리의 다른 글
성능고도화 3-6 히스토그램 (0) | 2016.12.26 |
---|---|
성능고도화 3-5. 카디널리티 (0) | 2016.12.26 |
성능고도화 3-3. 옵티마이저의 한계 (0) | 2016.12.26 |
성능고도화 3-2 옵티마이저 행동에 영향을 미치는 요소 (0) | 2016.12.26 |
성능고도화 3-1. 옵티마이저 (0) | 2016.12.26 |