오라클의 인덱스 리빌드 와 DROP 하고 다시 재생성하는 것에 대해서
각각의 방법이 어떻게 진행되는지, 어떤 장/단점이 있는지 알아보았습니다.
인덱스 생성 모니터링
--temp 테이블스페이스 임시세그먼트 생성
select * from V$SORT_USAGE;
--임시 세그먼트 인덱스 테이블스페이스로 이관
select * from DBA_SEGMENTS where segment_type = 'TEMPORARY';
인덱스 리빌드
테이블스페이스에 임시 인덱스 세그먼트 생성
기존 인덱스의 지정 테이블스페이스에 이관
기존 인덱스 드랍 후 임시 인덱스를 기존 인덱스로 바꿈 ( 이 작업을 위해 테이블스페이스에 2개의 인덱스가 잠시 공존함)
=> 리빌드를 진행하게 된다면, temp tablespace 와 인덱스 지정 테이블스페이스에 추가 용량이 필요함.
=> 리빌드 되는 28분의 작업시간동안 기존의 인덱스를 사용할 수 있음
(시간은 테스트 인덱스의 소요 시간입니다)
**참고
ㅇ인덱스 리빌드 시 인덱스 사용 확인
- 인덱스가 리빌드 되는 동안에도 인덱스 조회 가능
기존 invalidate = 0
- 인덱스 리빌드 완료 후 쿼리 재실행 후 v$sql 확인
쿼리에서 사용하는 인덱스의 변경으로 loads와 invalidations 값 증가
인덱스 drop & create
drop하여 이전 인덱스 공간 해제
테이블스페이스에 임시 인덱스 세그먼트 생성
기존 인덱스의 지정 테이블스페이스에 이관
=> 기존 인덱스를 삭제했다 재생성하므로, 리빌드 처럼 여유공간에 크게 제약받지 않는다.
=> 기존 인덱스를 삭제하고, 인덱스가 재생성되는 약 27분간 인덱스가 없는 상태로 쿼리 조회시 인덱스 사용할 수 없음
'DATABASE > Oracle' 카테고리의 다른 글
[Oracle] 통계정보 백업 및 복구, 자동통계정보 수집 기능 비활성화 (1) | 2023.11.14 |
---|---|
[Oracle] database shutdown hang ( ora-01013: user requested cancel of current ) (0) | 2023.10.05 |
[Oracle] 파라미터 변경 방법 (0) | 2023.08.25 |
[Oracle] 파라미터 파일 (spfile, pfile) (0) | 2023.08.25 |
[Oracle] interval partition table 주기적으로 파티션 삭제하기 (0) | 2023.07.11 |