반응형
오라클에 몇 천만 이상 건의 데이터를 insert 할 때는 속도가 안나오는 경우가 많았다.
아래같은 쿼리를 사용하여 속도를 개선할 수 있었다.
--기존 4분11초
INSERT INTO T_MAIN_LOG SELECT * FROM T_TMP_LOG WHERE F_CD = 'CD1';
COMMIT;
--1. NOLOGGING 로그삭제
ALTER TABLE T_MAIN_LOG NOLOGGING ;
--2. /*+ append */ 추가
--10초로 개선됨
INSERT /*+ append */ INTO T_MAIN_LOG
SELECT *
FROM T_TMP_LOG
WHERE F_CD = 'CD1';
--3. 삭제했던 logging 다시추가
ALTER TABLE T_MAIN_LOG LOGGING ;
--주의점 rollback 못함
DB에 INSERT한다는 LOG를 쌓지않게하여 개선되는 것 같다.
주의할 점은 insert시 rollback이 불가능하다.
반응형
'DB > Oracle' 카테고리의 다른 글
오라클 구분자를 사용한 문자열을 행으로 변환(regexp, connect by level) (0) | 2024.10.17 |
---|---|
drop 테이블 복구 (0) | 2024.08.07 |
오라클 DB링크 (0) | 2024.07.05 |
테이블 LOCK (1) | 2024.04.16 |
오라클 인덱스관리 (0) | 2024.03.22 |