인덱스 클러스터링 팩터
DB CAFE
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 인덱스 클러스터링 팩터[편집]
1.1 인덱스 Clustering Factor 확인 방법[편집]
SELECT t.owner,
i.index_name,
t.blocks AS t_blocks,
i.num_rows,
i.clustering_factor
FROM dba_indexes i,
dba_tables t
WHERE i.table_name = t.table_name
AND i.table_owner = t.owner
AND i.index_name = :INDEX_NAME;
- 인덱스 Clustering Factor(이하 CF)는 인덱스 키 칼럼 기준으로 테이블의 데이터들이 얼마나 잘 정렬(군집)되어 있는지를 나타내는 수치
- CF는 메모리에 단 하나의 블록만을 담을 수 있는 공간이 있다고 가정하고, 인덱스 스캔 시에 테이블 블록을 몇 번 액세스해야 하는지를 계산한 값
- 즉 CF가 높을수록 db file sequential read 대기가 증가할 수 있는 가능성이 존재
- CF 값은 ANALYZE 명령문이나, DBMS_STATS 패키지를 이용해서 확인
- 인덱스에 대해 통계정보를 생성하면 DBA_INDEXES.CLUSTERING_FACTOR에 CF의 값이 입력됨.
- CF 수치는 테이블의 블록 수에 가까울 수록 좋고, 로우 수에 가까울수록 않 좋음.
- 성능 문제의 원인이 CF인 경우, 테이블을 인덱스의 정렬순서와 동일한 순서로 재생성함으로써 해결.
- 하지만 테이블 재생성은 해당 테이블을 참조하는 다른 인덱스 성능에 영향을 미치므로 신중하게 고려 할것.