반응형
[Oracle]Index fragmentation 오라클 인덱스 단편화
인덱스를 생성해서 수정삭제가 반복되다보면 인덱스 단편화 현상이 생기는데요
보통 B* tree인덱스를 만들었을때 데이터를 입력하면 루트를 기준으로 양옆으로 균형있게
데이터가 들어가는데요. 이렇게 균형이 잡혀있는 상태에서 삭제를 한다면 균형이 깨지게되며
리프블락에 비어있는 공간이 생길 수 있습니다. 이러한 인덱스 단편화현상은
coalesce로 없앨 수 있습니다.
일반적으로 인덱스 밸런싱이 20%를 초과하면 성능이 저하된다고해요
BIG_EMP1테이블의 인덱스를 조회해보니 I_BIGEMP_EMPNO라는 인덱스에
64개의 리프블락이 있는것을 확인 하실수 있습니다.
대량의 데이터를 삭제하고 다시 분석해보겠습니다.
대량의 데이터가 삭제됬는데도 불구하고 LEAF_BLOCKS는 64개로 동일한 것을
볼 수 있습니다. 블락안에 비어있는공간들이 많이 있다는 것을 뜻하겠죠.
ALTER INDEX I_BIGEMP_EMPNO COALESCE; 라는 명령어로 인덱스 단편화현상을 없애보겠습니다.
위와같은 명령어를 주자 LEAF_BLOCKS가 12개로 확 줄어든것을 확인 할 수 있습니다.
이처럼 수정 삭제가 많이 일어났다면 인덱스단편화 현상을 제거해주는 것이 필요합니다.
필요에 따라서는 인덱스를 재구성하는것도 필요하겠죠 ㅎ
반응형
'컴퓨터 > Oracle' 카테고리의 다른 글
[Oracle]INDEX INVISIBLE (0) | 2014.07.23 |
---|---|
[Oracle]Index usage 오라클 인덱스 사용여부 조회 (0) | 2014.07.23 |
[Oracle]Tablespace fragmentation 오라클 테이블스페이스 단편화 (2) | 2014.07.23 |
[Oracle]Index 오라클 인덱스 설계시 주의사항 (1) | 2014.07.22 |
[Oracle]Index 오라클 인덱스(logical, physical) (0) | 2014.07.22 |
댓글