본문 바로가기

DB/Oracle

오라클 bulk insert 속도개선

반응형

오라클에 몇 천만 이상 건의 데이터를 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