오라클 벌크 인서트
DB CAFE
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 벌크 인서트(BULK INSERT) 로 입력 속도 증가[편집]
- 대량 인서트 성능 개선시 벌크 인서트를 사용하여 성능 개선
1.1 일반 INSERT[편집]
- 샘플 테이블
create table LARGE_TBL (id number, value varchar2(50));
begin
for i in 1 .. 1000000 loop
insert into large_tbl values (i,'foobar');
end loop;
commit;
end;
/
- 일반 INSERT 는 40초 소요
Elapsed: 00:00:40.53
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1000000 15.67 15.42 11 2838 1040617 1000000
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 1000001 15.67 15.42 11 2838 1040617 1000000
1.2 BULK INSERT[편집]
- 테이블 레코드 형식의 배열에 값을 저장
declare
TYPE tbl_ins IS TABLE OF LARGE_TBL%ROWTYPE index by binary_integer;
w_ins tbl_ins;
begin
for i in 1 .. 1000000 loop
w_ins(i).id := i;
w_ins(i).value := 'foobar';
end loop;
forall i in 1 .. 1000000 insert into large_tbl values w_ins(i);
commit;
end;
/
- BULK INSERT 는 1초
Elapsed: 00:00:01.26
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.49 0.50 11 4804 24093 1000000
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 0.49 0.51 11 4804 24093 1000000