본문 바로가기
IT/Oracle

대용량 insert

by heavenLake 2022. 7. 6.
반응형

출처 : 어디선가 복사해둔 글인데 사이트를 잊어버렸는네요..;; ㅠㅠ 

 

몇가지 방안이 있습니다. 그런데 명심하실 건, DBMS 에서 다량의 insert 쿼리는 매우 좋지 않다는 것입니다.
가장 좋지 않는 방법에서 좋은 방법 순으로 나열하겠습니다.

1. insert into ~ values ~; insert ~ values ~; ...
2-1. insert all into ~ values ~ into ~ values ~ ...; (Oracle)
2-2. insert into ~ select ~ union all select ~ ...; (MS SQL Server)
2-3. insert into ~ values ~, ~, ... (MySQL)
3. Bulk Insert

Bulk insert 가 효율이 가장 좋고 속도도 매우 빠르고 좋으나, Excel 을 바로 insert 할 수 없는 DBMS 가 존재하니 아예 cvs 나 text 파일로 만들어서 업로드 하는 것을 고려하시고,
 대량 insert 시에는 index, transaction 끄고 하시는 것이 좋습니다. 위에서도 언급했듯이 transaction 이 메모리가 full 나게 하는 원인이 될 가능성이 꽤 놓습니다.

속도 면에서는...1 번이 약 1분이 걸린다면 적절하게 5천개 정도씩 나눠서 2번으로 처리했을 경우 40초 정도로 줄어들며, 3번을 적용했을 경우 1~2초면 끝납니다.

추천 :

insert into test (a,b,c)
<foreach item="item" index="index" collection="list" open="" close="" separator="UNION ALLPermalink"> 
 select #{item.a},#{item.b},#{item.c} from dual 
</foreach>

 

 

 

반응형

댓글