[질문] 테이블에서 테이블로 대량의 건을 이동시킬때 효율성 문제
글쓴이: puaxx / 작성시간: 수, 2009/05/27 - 11:48오전
지금 어떤 프로그램이 있습니다. 오라클디비에 연동되는 프로그램인데요.
이 프로그램은 어떤 일련의 작업을 통제하고 관리하는 프로그램입니다.
업무중에 완료처리가된것을 다른테이블로 이동을 시키는 업무가 있습니다. 데이터 고대로 이동을 시켜야 되는데요.이 건수가 때로는 100만건이 넘는경우가 있는데요.
저는 아무생각없이 INSERT INTO SELECT 의 쿼리로만 날려서 하려고 했더니..이게 시간이 너무 오래 걸린다는 것입니다.
현업에서는 얼마나 작업이 오래걸리는지 알아야 하기때문에(이게 제대로 진행되는지 알길이 없기 때문인듯) 그걸 진행상황 표시를 해달라고 한다는 것이지요.
그래서 SELECT로 뽑아서 프로그램상에서 INSERT를 해줄려고 하니, 진행상황이야 표시하기 용이하지만 퍼포먼스가 떨어질것 같은 느낌이 든다는것이 문제 입니다. 즉 위의 방법으로 10분걸릴것을 아래것으로 20분 걸린다면 심각한 문제이죠. 분명 퍼포먼스 떨어지는것도 현업은 싫어할것이 뻔하겠죠.
퍼포먼스와 요구를 모두 충족시킬 수 있는 방법이 없을까요?
Forums:
^^;
트리거를 걸어서 완료된 업무를 바로 다른곳으로 이동해버리면 될거라 생각이 듭니다.
경우가 어떤것이 더 있을지 모르겠지만
업무중에 완료처리가된것을 다른테이블로 이동을 시키는 업무가 있습니다. 데이터 고대로 이동을 시켜야 되는데요
이 경우라면 트리거 걸어주시는게 맞을거라 보입니다.
그럼
...
관리자가 수백만건씩 묶인 작업을 선별해서 옮겨야 되기 때문에 트리거는 안될것 같습니다.
감사합니다.
진료는 DBA 에게..
DBA에게 물어보는게 답일듯합니다.
그분들이 쿼리를 만들면 30%이상 빨라지더군요..
LISP 사용자모임
http://cafe.naver.com/lisper
방송기술 개발업체
http://playhouseinc.co.kr
댓글 달기