DB/Oracle

오라클 bulk insert 속도개선

현박이 2024. 10. 17. 14:18
반응형

오라클에 몇 천만 이상 건의 데이터를 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이 불가능하다.

반응형