행위

인덱스 클러스터링 팩터

DB CAFE

thumb_up 추천메뉴 바로가기


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;
  1. 인덱스 Clustering Factor(이하 CF)는 인덱스 키 칼럼 기준으로 테이블의 데이터들이 얼마나 잘 정렬(군집)되어 있는지를 나타내는 수치
  2. CF는 메모리에 단 하나의 블록만을 담을 수 있는 공간이 있다고 가정하고, 인덱스 스캔 시에 테이블 블록을 몇 번 액세스해야 하는지를 계산한 값
  3. 즉 CF가 높을수록 db file sequential read 대기가 증가할 수 있는 가능성이 존재
  4. CF 값은 ANALYZE 명령문이나, DBMS_STATS 패키지를 이용해서 확인
  5. 인덱스에 대해 통계정보를 생성하면 DBA_INDEXES.CLUSTERING_FACTOR에 CF의 값이 입력됨.
  6. CF 수치는 테이블의 블록 수에 가까울 수록 좋고, 로우 수에 가까울수록 않 좋음.
  7. 성능 문제의 원인이 CF인 경우, 테이블을 인덱스의 정렬순서와 동일한 순서로 재생성함으로써 해결.
  8. 하지만 테이블 재생성은 해당 테이블을 참조하는 다른 인덱스 성능에 영향을 미치므로 신중하게 고려 할것.