Parameter
|
Description
|
Ownname
|
분석할 테이블 소유자
|
tabname
|
테이블 이름
|
partname
|
파티션 이름, 지정 하지 않으면 NULL 값
|
Estimate_percent
|
분석할 Row의 Percentage, NULL 이면 Compute(Row 전체)
유효값은 1/1000000 ~ 100 디폴트로, DBMS_STATS.AUTO_SAMPLE_SIZE 에 의해서 최적의 값을 결정
|
Block_sample
|
random block sampling or random row sampling 결정
random block sampling 이 좀더 효과적이다.
데이터의 블록 별 분포도가 안좋을 시에는 부적절한 정보 생성
디폴트 값이 False로, random row sampling 을 수행한다.
|
Method_opt
|
Histogram 생성시 사용하는 옵션
l FOR ALL [ INDEXED | HIDDEN ] COLUMNS [ size_clause ]
l FOR COLUMN [ size clause ] column | attribute [size clause]
[, column|attribute [ size clause ]…]
Size_clause := SIZE { integer | REPEAT | AUTO | SKEWONLY }
n Integer : Histogram Bucket 수, Max 는 1,254
n REPEAT : 이미 Histogram 이 있는 칼럼에 대해서만 생성
n AUTO : 데이터 분산도와 칼럼 부하 정도에 따라서 생성 결정
n SKEWONLY : 데이터 분산도에 따라서 생성 결정
디폴트 값은 FOR ALL COLUMNS SIZE AUTO 이다.
즉, Histogram 의 생성여부를 Oracle 이 알아서 판단하게 된다.
이 경우
EX) method_opt => FOR ALL COLUMNS SIZE 1
모든 컬럼에 대해서 Histogram bucket 의 수를 1로 한다.
즉, 컬럼 내에 존재하는 여러 가지 값들의 cardinality 는 모두 동일한
값으로 간주한다. ( histogram 을 사용하지 않는다.)
이것은 where 조건에 들어오는 특정 컬럼에 대한 값의 변화에 따라서
PLAN 이 변경될 가능성을 없애고자 함이다.
FOR ALL COLUMNS SIZE 1 로 설정하여 Histogram 정보가 생성되지
않도록 조치 한다.
|
degree
|
병렬처리 정도
디폴트 값은 NULL 이고, CREATE TABLE, ALTER TABLE 시
설정된 DEGREE 값에 의해 정해진다.
AUTO_DEGREE 값은 병렬처리 정도를 자동으로 결정한다.
이것은 1 or DEFAULT_DEGREE [ Object Size 와 CPU Count 에 의해 결정 ]
|
granularity
|
Parition table 에 대한 분석시 사용
‘ALL’ – Global, Partition, Subpartition 통계정보 수집 – Parition Table 대상
‘AUTO’ – 디폴트 값으로 ,Partition Type 에 따라서 결정 – 일반 Table 대상
‘DEFAULT’ – Global, Partition 통계정보 수집, Old Version 과 호환을 위해 사용
‘GLOBAL’ - Global 통계정보 수집
‘GLOBAL AND PARTITION’ – SubPartition 에 대한 통계정보는 수집되지 않는다.
‘PARTITION’ – Partition 통계정보 수집
‘SUBPARTITION’ – SubPartition 통계정보 수집
|
cascade
|
대상 테이블의 인덱스에 대한 통계수집 여부
인덱스 통계정보는 병렬처리가 불가능하다.
TRUE – 대상 테이블에 관련된 index 에 대해서 통계정보 수집
|
stattab
|
통계수집을 통한 기존 통계정보 Update 전에,
기존에 존재하는 통계정보를 저장할 User Stat Table 을 지정
|
statid
|
Stattab 와 연관된 구분자 값
|
statown
|
Stattab 에 지정한 User Stat Table 의 소유자가 다를 경우 지정
|
no_invalidate
|
의존적인 Cursor를 Invalidate 할지 , 안할지 결정
True – 관련된 Cursor 를 invalidate 하지 않는다.
False – 디폴트 값으로, 관련된 Cursor 를 Invalidate 한다.
Default 로 DBMS_STATS.AUTO_INVALIDATE 값이고,
의미는 DBMS 가 의존적 Cursor 를 언제 invalidate 할지 자동으로 결정
이때 작용하는 Parameter는 _OPTIMIZER_INVALIDATION_PERIOD 이고,
Default 롤 18000 초(5시간) 이다.
즉, 통계 정보 수집에 의해 통계 정보가 변경된 후 약 5시간에 걸쳐 랜덤한 시점에 해당 Cursor가 실행될 때 invalidation이 발생한다.
이것을 Auto Invalidation이라고 부른다.
일정 시간에 걸쳐 랜덤하게 Cursor를 Invalidation함으로써 특정 시점에 Hard Parse가 한꺼번에 몰리는 현상을 피할 수 있다.
|
force
|
Lock 걸린 Table 에 대해서도 강제로 통계정보 생성
|