본문 바로가기
컴퓨터/Oracle

[Oracle]Index fragmentation 오라클 인덱스 단편화

by TEATO 2014. 7. 23.
반응형

[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개로 확 줄어든것을 확인 할 수 있습니다.

이처럼 수정 삭제가 많이 일어났다면 인덱스단편화 현상을 제거해주는 것이 필요합니다.

필요에 따라서는 인덱스를 재구성하는것도 필요하겠죠 ㅎ


반응형

댓글