대용량 자료 입력시 append hint의 필요성? 0 5 10,791

by 김선호 대용량 자료 입력 HWM append HINT [2009.01.05 15:05:16]


제목이 난해해서 죄송합니다 -_ -; 새해복 많이 받으시구요.

대용량 자료 insert(해봤자 1000만건-_ - 5000만건 하려다 디스크 용량때문에 자꾸 뻑나서 1000만건을.. ) 성능 테스트를 하고 있는데

append 힌트를 사용했을 때 와 사용 안했을 때 시간이 많이 차이가 나서 질문을 올립니다.

일단 제가 찾은 append 힌트에 관한 글들을 보면

"HWM 이후의 익스텐트부터 insert하므로 HWM Bump up에 의한 성능저하를 감소시킨다."  - 권순용씨 경영과컴퓨터 칼럼 2008년4월 발췌

"append hint 사용시 빈 블록에 대해서 insert가 가능하지만 Direct load insert처리시(append힌트를 사용하는 것을 얘기하는 듯) HWM이후의 영역에 insert를 하므로 통상의 insert처리보다 영역의 사용효율이 저하됩니다." -http://blog.naver.com/hirokorea?Redirect=Log&logNo=20028862897 발췌

2가지가 있습니다.

제가 사용하는 users 테이블스페이스는 예전에 5000만건 자료 테스트 한다고 깝치다가 엄청나게 늘어나 있습니다.(지금 확인해보니 26gb 잡혀잇네요 -_ -;)

천만건 테이블 생성 테스트(create table "DDDD" as 이용)를 했는데 append 힌트와 nologging옵션 이용시

158.59s -- append hint, nologging 사용

 86.72s  -- nologging 만 사용

가 걸렸습니다.

그렇다면 대용량 자료 입력시 테이블의 빈공간이 많다면(HWM확인이 안되니...) append 를 쓰지 않는 것이 더 좋다 라는 결론이 나오게 되는데 (제 생각)

다른 분들은 이 append 힌트에 대해 생각하시는지 궁금합니다.

 

by 현 [2009.01.05 15:17:35]
맞습니다.
append 힌트는 HWM 위에 데이터를 쓰게 됩니다.

모든 부분에서 성능과 효율을 잘 따져야 합니다.
님께서 발췌하신 두부분에서도 잘 나와 있듯이, append 힌트는 Direct load 로 HWM 위에 쓰기 때문에 속도는 빠르지만 낭비공간이 생길 수 있습니다.
따라서 어떤것이 우선시 되어야 하는지는 작업자가 판단해야 할 몫입니다.

by 현 [2009.01.05 15:19:29]
아...but
테이블에 최초로 데이터를 로드하는 경우라면?
혹은 truncate 하고 데이터를 넣는 경우라면 hwm 문제는 생각할 필요가 없으니 append 힌트를 사용하시면 빠르게 작업할 수 있겠죠?

by 장태길 [2009.01.05 15:31:07]
어차피 append 는 hwm 위에 insert 되는지라 중간에 빈블록 유/무랑 상관이 없습니다.
아예 중간 빈블록에 찾아 넣지 않고 hwm 위에 항상 새블록에 넣어서 빠르게 넣느거라.

158.59s -- append hint, nologging 사용
86.72s -- nologging 만 사용
상기 결과는 결국 appedn hint 쓰면 더 느리다는 결론인데요.

by 김선호 [2009.01.05 15:55:13]
답변감사드립니다~ 그리고 답변하신거에 대해서 질문 또 올릴게요 ~
현님//말씀하신대로라면 최초로 데이터 로드하는 경우 (create table xxxx as select....) 경우에 append힌트를 쓰는것이 더 빠르다 인데 제가 했던 테스트결과에서는 반대로 나왔는데요 이경우엔 다른 어떤 문제 때문에 결과가 뒤집어진 건가요?
장태길님//빈block의 유/무랑 상관 없다고 하셨는데 append써서 hwm위 새 block에 넣는게 빈 block에 넣는거 보다 더 느린거 아닌가요? 혹시 제가 답변을 잘못 이해한건..;;

by 장태길 [2009.01.05 15:58:15]
예 맞습니다.
보통 append 써서 hwm 위 신규 block 에 넣는게 빨라서 사용하는 것이지요..
근데 결과는 append 가 더 느리게 나와서요..
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입