티스토리 뷰

차세대 프로젝트에서 데이터 이관작업을 위해 AS-IS 테이블을 ①우리 개발 DBMS로 그대로 밀어 넣은 다음, ②프로시저를 돌려 개발에 사용되는 테이블에 데이터를 밀어 넣는 작업을 하는 중 DB가 뻗어버렸다.

데이터가 1000만건이 넘어가고 다른 프로시저들이 함께 돌아가다 보니 프로시저를 한 번에 실행하기 어려웠던 것으로 보인다.

 

프로시저 분리 및 인덱스 추가

그래서 테이블 데이터를 조건별로 데이터를 끊어서 밀어넣기로 했다. 그렇다 해도 최대 70만 건의 row를 조회하기 때문에 속도개선을 위해 SELECT 문에 조인 조건으로 사용 중인 컬럼들에 인덱스를 추가했다. (기간에 해당하는 컬럼은 기존에 조인조건에도 포함되었기 때문에 인덱스로 같이 잡혔다.)

 

 

결과

확실히 데이터 건수가 작아지다 보니 실행 시간이 단축된 게 느껴졌다. 또한 일부 데이터는 PK중복 등 오류로 인해 전송되지 않기도 했는데 만약 프로시저를 한 번에 돌렸다가 오류가 났다면 모든 데이터를 처음부터 다시 이관해야 했을 것이다. 

 

데이터 이관시 건수가 많거나 용량이 클 경우, 테이블 구조를 파악하는데 시간을 쓰더라도 대용량 데이터를 한 번에 이관하는 방식은 지양하는 것이 바람직해 보인다.

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함