- 기존 인덱스를 다른 테이블스페이스로 이동해야 할 경우
- 인덱스가 삭제된 엔트리를 많이 포함하고 있을 경우
- 기존의 정규 인덱스가 reverse 키 인덱스로 변환 되어야 할 경우
- 새 인덱스는 기존 인덱스를 데이터 소스로 사용하여 구축 된다.
- 기존 인덱스를 사용하여 더 나은 성능을 얻기 위해 인덱스를 구축할 때는 정렬이 필요없다.
- 이전 인덱스는 새 인덱스가 구축된 후 삭제된다. 재구축하는 동안 이전 인덱스와 새 인덱스 모두를 각각의 테이블스페이스에 수용할 충분한 공간이 필요하다.
- 새 인덱스가 구축되고 있는 동안 질의문은 기존 인덱스를 계속 사용 할 수 있다.
- 인덱스를 신속하게 다른 TABLESPACE로 옮길 수 있다.
- INDEX를 DROP시키지 않고도 STORAGE나 TABLESPACE관련 PARAMETER를 변경할 수 있다.
- 추가 disk 공간이 필요하다. (내부적으로 지정된 TABLESPACE에 CREATE후 기존의 INDEX를 DROP하므로)
- 기존에 사용하던 INDEX를 사용하는 것이 아니라 새로운 INDEX를 생성한다.
REVERSE나 NOREVERSE 키워드는 B-트리 인덱스에만 지정될 수 있다.
-- 테이블스페이스가 test인 emp_ename_idx인덱스의 테이블스페이스를 -- idx로 재구축 하는 예이다. SQL> ALTER INDEX emp_ename_idx REBUILD TABLESPACE idx;
부적당한 크기 지정이나 크기의 증가로 인해 인덱스 단편화가 생기는 경우 인덱스를 재구축하거나 병합할 수 있다.
- 추가 disk 공간을 필요로 하지 않는다.
- Tree의 동일한 branch상의 leaf block들만을 병합한다.
- Leaf block을 신속하게 사용가능한 상태로 만든다.
- INDEX를 다른 TABLESPACE로 옮길 수 없다.
-- 인덱스 병합 예제 SQL> ALTER INDEX emp_ename_idx COALESCE;
재구축(Rebuild) | 병합(Coalesce) |
---|---|
인덱스를 다른 테이블스페이스로 빠르게 이동 | 인덱스를 다른 테이블스페이스로 이동 못함 |
높은 비용, 더 많은 디스크 영역 필요 | 낮은 비용, 더 많은 디스크 영역 불필요 |
새로운 트리 생성,적용 가능한 경우 높이 축소 | 최하위 블록을 동일한 트리의 분기와 병합 |
원래 인덱스를 삭제하지 않고 저장 영역과 테이블스페이스 매개변수를 빠르게 변경 | 사용을 위해 인덱스 최하위 블록을 빠르게 비움 |
- 강좌 URL : http://www.gurubee.net/lecture/1110
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.