월마다 700만건의 db 데이터 갱신작업 질문드려요 ! 0 10 1,286

by 안쓰 [SQL Query] [2019.10.22 10:16:16]


안녕하세요 

늘 구루비통해 db 도움얻고있는 초급 개발자 입니다

 

오늘드릴 질문은,

월마다 600~700 만건 사이의 주소 db 데이터를받아 테이블에 갱신하는 작업을 java 배치나 오라클 프로시저로 개발하려고 합니다.

 

신규 700만건 데이터는 테스트계 TEMP 테이블에 밀어넣은뒤,

테스트계에서 먼저 테스트하고난뒤,

운영계 테이블에 기존데이터 삭제후 insert 작업을 하려고 하는데요

목표는 운영계 테이블에 최대한 기존 주소 데이터를 유지하며 무중단으로 갱신하는걸 목표로 하고있습니다

 

건수가 워낙많아서,

테스트계 TEMP DB에서 1건조회후

운영계 DB delete 후 insert

-> 이런식으로 반복하려면 1건삭제에만 3건의 쿼리가날라가다보니 700만건을 이렇게 처리하도록 짜도될지 걱정됩니다..

-> 어느정도의 성능이을 고려하여, 1건씩은 아니더라도

100건,1000건씩 삭제하고 insert 하는 방식까진 괜찮다고 보고있는데

주소 단일테이블의 키가 한개이고, 해당건을 어떻게 roop돌려야 할지도 막막합니다 ㅜㅜ

 

많은 조언부탁드립니다 !

 

by jkson [2019.10.22 10:59:12]

한건씩 delete, insert하고 commit하는 방법은 좋지 않습니다. db call도 많아지고 아카이브로그도 많이 쌓일테구요.

운영중에 데이터 수정이라면..

저라면 bulk update 방식으로 처리할 거 같은데 더 좋은 방법이 있는지 모르겠네요.


by 안쓰 [2019.10.22 13:23:49]

관심갖고 답변달아주셔서 정말감사합니다

1건씩 개별커밋은 안하는쪽으로 해야겠어요 ㅜㅜ


by 우리집아찌 [2019.10.22 13:22:05]

by 안쓰 [2019.10.22 13:24:11]

우리집아찌님 답변달아주셔서 감사합니다 ! 보내주신 내용참고하겠습니다 !!


by DarkBee [2019.10.22 13:22:18]

sql loader   replace 기능을 이용해보시기 바랍니다.

 

다만 Conventional path 방식과 Direct path 방식이 있으니, '꼭' 확인하시고 돌리시기 바랍니다.


by 안쓰 [2019.10.22 13:24:46]

말씀해주신 내용 꼭참고하겠습니다

유의사항까지 말씀해주셔서 감사합니다 !


by 우리집아찌 [2019.10.22 13:26:30]

근데 봐야알지만 700만건이면 얼마 안걸리는게요요시스템 점검 걸어놓고 돌려고 될거 같네요


by 안쓰 [2019.10.23 09:39:42]

감사해요 우리집아찌님 ㅜㅜ

700만건이 제가다뤄본 최대데이터량이라...

 

혹시 테스트로 얼마만큼의 시간이 걸릴지 계산하려면

한건 테스트해보고 곱하기 건수만큼으로 시간계산하나요??


by 우리집아찌 [2019.10.22 13:27:08]

오 역시 다크비 모르는게 없어!!


by 우리집아찌 [2019.10.23 09:52:40]

모바일에서는 답변 버튼이 없네요  

인서트시 시간 계산 따로 하시지 말고  

테이블을 따로 만들어서 테스트 해보세요 

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