안녕하세요
작업을 하다 보니 궁금한점이 있어서 고수님들꼐 문의드립니다.
대용량테이블로써 partition table입니다.
partition을 split 작업으로 추가했습니다.
작업을 하고 나니 index들이 꺠져버렸습니다. (토드에 X로 뜨고 , 참고로 인덱스는 파티션이 아닌 일반 인덱스 입니다.)
그래서 인덱스 리빌드를 하려고 하니 데이터가 너무 많아서 temporary tablespace를 100기가를 써도 인덱스가 걸리지 않았습니다. (인덱구문은 alter index 인덱스명 rebuild; 이렇게 걸었습니다)
여기서 궁금한건 인덱스를 삭제하고 다시 거는것도 하나의 방법이 될수 있을까요?
아니면 빨리 걸수 있는 구문들이 있을까요?
데이터는 겁나 대용량입니다.
좋은의견 부탁드립니다.
우선 저도, local index 로 생성하시는 것을 권해 드립니다. (필요한 column 이 꼭 선두 column 이 아니더라도 index 를 구성하는 column 으로 포함되어 있기만 해도 되어, 대부분 local index 로 cover 가능합니다)
Index rebuild (global 포함) 는 parallel 로 수행 시 속도는 빨라 집니다. 이 경우, online option 은 함께 사용할 수 없고, temporary tablespace 를 필요로 하는 용량도 일부 증가 됩니다. temporary 사용량은 index 구성 column 의 sort 처리량에 비례하므로 (index 를 drop 하고, 재생성 하시더라도, parallel 로 수행하더라도) temporary 사용량(필요량)이 줄지는 않습니다.
alter index schema.index_name rebuild parallel 8 ; alter index schema.index_name noparallel ;
속도 향상을 위해, parallel 로 rebuild 한 경우, 반드시 alter 로 원복해 주어야 합니다
네..좋은 조언 감사드립니다.
이번에 partition 테이블의 글로벌 인덱스와 로컬인덱스에 대해 공부하게 되네요
partition 테이블을 자주 쓰지 않으니 지식이 부족했습니다.
앞으로의 유지관리를 위해서는 local 인덱스로 생성을 하는것이 좋을거 같습니다.
create index 인덱스명 on 테이블명(컬럼1,컬럼2) local;
이렇게도 쓰고
parallel 로도 rebuild 테스트 해봐야겠습니다
감사합니다
가까운 시일에 풀백업을 받는다면 nologging 옵션을 같이 쓰는것도 방법입니다.
윗분들 말대로 로컬로 쓸수 있으면 로컬로 쓰는게 최고지만요.