반응형
Oracle Partition UPDATE 튜닝 정리
대용량 데이터를 입력할 때 성능 문제가 발생할 수 있어서 인덱스를 DROP 하고 데이터를 입력 후에 데이터가 모두 입력시킨 다음 인덱스를 재생성해주는 방법을 고려할 수 있다.
그러나 전체 데이터에 대한 인덱스를 재생성하는 비용도 적지 않기 때문에 쉽게 선택 할 수 없다.
만약 테이블이 파티셔닝 되어있고 이에 대해서 로컬 파티션 인덱스가 생성되어 있다면 파티션 단위로 인덱스를 재생성할 수 있기 때문에 데이터 입력을 빠르게 수행할 수 있다.
1. 작업 대상 테이블 파티션을 nologging 모드로 전환한다.
ALTER TABLE INFO_TABLE MODIFY PARTITION P_202201 nologging;
2. 작업 대상 테이블 파티션과 매칭되는 인덱스 파티션을 Unuseable 상태로 전환한다.
ALTER INDEX INFO_TABLE MODIFY
PARTITION p202201 unusable;
3. 가능하다면 Direct Path Insert 방식으로 대량 데이터를 입력한다.
INSERT /*+ append */ INTO INFO_TABLE
SELECT * FROM SOURCE_DATA WHERE TIME BETWEEN '20220101' AND '20220131';
(SOURCE_DATA 테이블은 입력하려는 데이터가 저장되어있는 원천 테이블)
4. 인덱스 파티션을 재생성한다.
ALTER INDEX INFO_TABLE_INDEX
REBUILD PARTITION p202201 nologging;
5. 작업 파티션을 Logging 모드로 전환한다.
ALTER TABLE INFO_TABLE MODIFY PARTITION p202201 logging;
ALTER INDEX INFO_TABLE_INDEX MODIFY PARTITION p202201 logging;
반응형
'C.S > DB' 카테고리의 다른 글
Oracle NL조인 (0) | 2022.10.10 |
---|---|
Oracle 파티션 테이블과 파티션 인덱스 (DELETE 튜닝) (0) | 2022.07.06 |
Oracle 파티션 테이블과 파티션 인덱스 (UPDATE 튜닝) (0) | 2022.07.06 |
Oracle 파티션 테이블과 파티션 인덱스 (0) | 2022.07.05 |
DataBase 정규화 (0) | 2021.02.28 |