오라클 bulk insert 질문 드립니다. 0 1 3,581

by 깽즈 [Oracle Admin] [2014.10.11 22:21:56]


안녕하세요..

성능고도화책 공부하면서 궁금증이 생겨서 이렇게 문의 드립니다.

책 1권, 데이터베이스 call 최소화 원리 부분에서요.

  BEGIN
    FORALL i IN p_empno.first..p_empno.last
      INSERT INTO emp2
      VALUES ( p_empno   (i)
             , p_ename   (i)
             , p_job     (i)
             , p_sal     (i)
             , p_deptno  (i)
             , p_hiredate(i) );

....

  OPEN c;

  LOOP

    FETCH c BULK COLLECT
    INTO l_empno, l_ename, l_job, l_sal, l_deptno, l_hiredate
    LIMIT l_fetch_size;

    insert_t( l_empno, l_ename, l_job, l_sal, l_deptno, l_hiredate );

 

이런식으로 array 처리하면 좋다는거는 이해하겠는데요..

그럼 

INSERT /*+ APPEND PARALLEL(X 4) */ INTO AAA X

SELECT * FROM BBB;

이런식으로 APPEND 방식으로 INSERT하는 것과는 어떤 차이가 있는건가요?

굳이 속도를 따지자면 어떤방식이 더 좋은지 궁금합니다.

즐거운 주말되시구요...조언 기다리겠습니다.

 

감사합니다.

by DJ [2014.10.13 13:38:43]

위에서 언급하신 부분은 database 와 client 와의 통신 횟수를 최소화 하여 성능을 향상시키는 부분인것 같구요.

아래 APPEND 방식은 database에 bulk로 insert할때 사용하는 튜닝 기법 입니다. 사용처가 다르지 않을 까 하네요.

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입