콘텐츠로 이동

ALTER INDEX

ALTER INDEX#

구문#

alter_index ::=#

directkey_mod_clause ::=, rebuild_clause ::=, alter_index_properties ::=

directkey_mod_clause ::=#

directkey_mod_clause

rebuild_clause ::=#

rebuid_caluseimage42

index_attribute ::=#

image43_index_attribute

alter_index_properties ::=#

image44_alter_index

alter_index_segment_attribute_clause ::=, allocate_extent_clause ::=

alter_index_segment_attribute_clause ::=#

image45_alter_index_segment

storage_clause ::=#

storage_clause

allocate_extent_clause ::=#

image47_allocate_extent_clause

전제 조건#

SYS 사용자, 인덱스가 속한 스키마의 소유자 또는 ALTER ANY INDEX 시스템 권한을 가진 사용자만이 이 구문으로 인덱스를 변경할 수 있다.

설명#

기존 인덱스 정의를 변경하거나 재구축한다.

user_name#

변경될 인덱스의 소유자 이름을 명시한다.

생략하면 Altibase는 현재 세션에 연결된 사용자의 스키마에 속한 것으로 간주한다.

index_name#

변경될 인덱스의 이름을 명시한다.

directkey_mod_clause#

이 절은 인덱스가 Direct Key인덱스를 사용할 것인지 여부를 명시할 때 사용된다. Direct Key 인덱스에 대한 자세한 내용은 CREATE INDEX 구문을 참고한다

MAXSIZE integer#

Direct Key 인덱스의 최대 크기를 설정할 수 있다.

OFF#

Direct Key 인덱스를 일반 인덱스로 변경한다.

rebuild_clause#

존재하는 인덱스 또는 인덱스의 한 파티션을 재구축한다.

index_attribute#

재구축된 인덱스 파티션이 저장될 테이블스페이스를 명시한다.

RENAME#

변경될 인덱스의 이름을 명시한다.

AGING#

이는 인덱스 페이지에 트랜잭션 커밋 SCN을 기록하고, 구 버전(old version)의 노드들을 삭제하는데 사용된다. 이 구문은 디스크 기반 인덱스에만 사용 가능하다.

REORGANIZATION#

메모리 B-tree 인덱스의 리프 노드를 이웃 노드와 통합하여 인덱스 공간을 재구성한다.

데이터에 비해 인덱스 범위가 크거나 특정 인덱스에 단편화 현상이 있을 경우에 사용하면 공간 효율성이 향상된다. 메모리 기반 B트리 인덱스만 사용 가능하다.

alter_index_segment_attribute_clause#

INITRANS 절#

초기 TTS(Touched Transaction Slot)의 개수를 변경한다.

MAXTRANS 절#

최대 TTS(Touched Transaction Slot)의 개수를 변경한다.

storage_clause#

사용자가 세그먼트내의 익스텐트 관리 파라미터를 지정할 수 있는 구문이다.

INITEXTENTS 절#

ALTER INDEX 구문의 INITEXTENTS 파라미터는 무시된다.

NEXTEXTENTS 절#

세그먼트 확장시 추가될 익스텐트 개수를 지정한다.

MINEXTENTS 절#

한 세그먼트의 최소 익스텐트 개수를 지정한다.

MAXEXTENTS 절#

한 세그먼트의 최대 익스텐트 개수를 지정한다.

allocate_extent_clause#

이는 인덱스 세그먼트에 명시적으로 익스텐트를 할당하는데 사용된다. 인덱스 세그먼트에 추가될 익스텐트의 총 크기를 지정해야 한다. 디스크 테이블스페이스가 여러개의 데이터 파일로 구성되어 있다면 익스텐트는 여러 파일들에 걸쳐서 고르게 할당된다.

예제 1: Direct Key Index 변경#

<질의> 인덱스 idx1을 Direct Key 인덱스로 변경하라.

iSQL> ALTER INDEX idx1 DIRECTKEY;

<질의> Direct Key 인덱스 idx1을 일반 인덱스로 변경하라.

iSQL> ALTER INDEX idx1 DIRECTKEY OFF;

<질의> 인덱스 idx3을 Direct Key 인덱스로 변경할 때 MAXSIZE를 10으로 설정한다.

iSQL> ALTER INDEX idx3 DIRECTKEY MAXSIZE 10;

예제 2: 인덱스 파티션 재구축#

<질의> 인덱스 파티션 idx_p5를 테이블스페이스 tbs1에 구축하라.

iSQL> ALTER INDEX IDX1 REBUILD PARTITION idx_p5 TABLESPACE tbs1;

예제 3: 인덱스 이름 변경#

<질의> 인덱스 emp_idx1의 이름을 emp_idx2로 변경하라.

iSQL> ALTER INDEX emp_idx1 RENAME TO emp_idx2;

예제 4: 인덱스에 익스텐트 할당#

<질의> 디스크 테이블스페이스에 위치하는 인덱스 local_idx 에 10M만큼의 익스텐트를 할당한다.

iSQL> ALTER INDEX felt_idx ALLOCATE EXTENT ( SIZE 10M );

예제 5: 인덱스 공간 재구성#

<질의> 인덱스 idx1의 reorganization을 수행하라

iSQL> ALTER INDEX idx1 REORGANIZATION;