Oracle Admin 강좌 (Oracle9i)
인덱스 재구축(REBUILD) 및 병합(COALESCE) 8 1 41,929

by 김정식 인덱스 재구축 병합 ALTER INDEX REBUILD COALESCE INDEX [2002.01.24]


재구축(Rebuild)이 필요한 상황

  - 기존 인덱스를 다른 테이블스페이스로 이동해야 할 경우

  - 인덱스가 삭제된 엔트리를 많이 포함하고 있을 경우

  - 기존의 정규 인덱스가 reverse 키 인덱스로 변환 되어야 할 경우

 

인덱스 재구축(Rebuild)의 특성

  - 새 인덱스는 기존 인덱스를 데이터 소스로 사용하여 구축 된다.

  - 기존 인덱스를 사용하여 더 나은 성능을 얻기 위해 인덱스를 구축할 때는 정렬이 필요없다.

  - 이전 인덱스는 새 인덱스가 구축된 후 삭제된다. 재구축하는 동안 이전 인덱스와 새 인덱스 모두를 각각의 테이블스페이스에 수용할 충분한 공간이 필요하다.

  - 새 인덱스가 구축되고 있는 동안 질의문은 기존 인덱스를 계속 사용 할 수 있다.

 

재구축(Rebuild) 옵션의 장단점

 

장점

  - 인덱스를 신속하게 다른 TABLESPACE로 옮길 수 있다.

  - INDEX를 DROP시키지 않고도 STORAGE나 TABLESPACE관련 PARAMETER를 변경할 수 있다.

 

단점

  - 추가 disk 공간이 필요하다. (내부적으로 지정된 TABLESPACE에 CREATE후 기존의 INDEX를 DROP하므로)

  - 기존에 사용하던 INDEX를 사용하는 것이 아니라 새로운 INDEX를 생성한다.

 

인덱스 재구축(Rebuild) 문법 예제

  REVERSE나 NOREVERSE 키워드는 B-트리 인덱스에만 지정될 수 있다.

 
-- 테이블스페이스가 test인 emp_ename_idx인덱스의 테이블스페이스를 
-- idx로 재구축 하는 예이다.
SQL> ALTER INDEX emp_ename_idx REBUILD TABLESPACE idx;   
    

 

인덱스의 병합(Coalesce)

  부적당한 크기 지정이나 크기의 증가로 인해 인덱스 단편화가 생기는 경우 인덱스를 재구축하거나 병합할 수 있다.

 

장점

  - 추가 disk 공간을 필요로 하지 않는다.

  - Tree의 동일한 branch상의 leaf block들만을 병합한다.

  - Leaf block을 신속하게 사용가능한 상태로 만든다.

 

단점

  - INDEX를 다른 TABLESPACE로 옮길 수 없다.

예제
 
-- 인덱스 병합 예제
SQL> ALTER INDEX emp_ename_idx COALESCE;  
    

 

재구축(Rebuild)과 병합(Coalesce)의 비용과 이익

재구축(Rebuild) 병합(Coalesce)
인덱스를 다른 테이블스페이스로 빠르게 이동 인덱스를 다른 테이블스페이스로 이동 못함
높은 비용, 더 많은 디스크 영역 필요 낮은 비용, 더 많은 디스크 영역 불필요
새로운 트리 생성,적용 가능한 경우 높이 축소 최하위 블록을 동일한 트리의 분기와 병합
원래 인덱스를 삭제하지 않고 저장 영역과 테이블스페이스 매개변수를 빠르게 변경 사용을 위해 인덱스 최하위 블록을 빠르게 비움

- 강좌 URL : http://www.gurubee.net/lecture/1110

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 김정식 [2004.08.17 13:08:28]
1. Index coalesce 개관

index fragmentation은 index rebuild나 coalesce로 조정 할 수 있다.
Oracle 8i의 신기능가운데 index를 rebuild 하는 대신
coalesce하는 기능이 추가되었다.
B-tree 형태의 인덱스를 사용할 경우 free 상태가 된
leaf block 들을 ALTER INDEX 명령의 coalesce옵션을
사용하여 병합할 수 있다.

2. 예제

ALTER INDEX SCOTT.EMP_IDX COALESCE;

ALTER INDEX 명령에서 coalesce는 병합 가능한 block중에서
기존에 사용중이던 index block의 내용을 병합할 수 있을
경우에만 적용된다.

3. COALESCE 옵션의 장단점

단점 : INDEX를 다른 tablespace로 옮길 수 없다.
장점 : 추가 disk 공간을 필요로 하지 않는다.
Tree의 동일한 branch상의 leaf block들만을 병합한다.
Leaf block을 신속하게 사용가능한 상태로 만든다.

4. REBUILD 옵션의 장단점

단점 : 추가 disk 공간이 필요하다. (내부적으로 지정된 tablespace에
create후 기존의 index를 drop하므로)
기존에 사용하던 index를 사용하는 것이 아니라
새로운 index를 생성한다.
장점 : 인덱스를 신속하게 다른 tablespace로 옮길수 있다.
Index를 drop시키지 않고도 storage나 tablespace관련
parameter를 변경할 수 있다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입