안녕하세요.
현재 하나의 데이타베이스를 통합하는차에,
40여개의 테이블의 ID값 변경와 물리적으로 외래키 관계는 아니지만,
논리적으로 연관되는 테이블의 값도 변경해야하는 일을 하고 있습니다.
각 테이블당에 20여만개의 데이타가 저장되어 있구요.
일단 php배치모드로 만들어 시뮬레이션해보니, 거의 50시간이 걸릴것 같은....
예를 들어 한 테이블에 종속 된 테이블이 4개 있는 경우,
첫 메인 테이블에 임시 temp_id를 만들어 두고, 그곳에 auto_increment되는 값을 저장하기 위해서요.
첫 메인 테이블에서 select를 수행하고 temp_id에 증가된 자연수값을 입력하고,(update)
각 종속된 테이블에 외래어 키 역확을 하는 놈에 대해 또한 임시 필드를 만들에 temp_id값을
저장하는 단순한 update를 수행하는 것을 반복합니다.
마지막에 메인테이블과 종속테이블에 관련된 필드를 제거하고,
temp_id를 id로 변경하고, 종속테이블의 임시 필드를 원래의 필드로 change 하는 단순한 과정입니다.
각 쿼리의 수행속도는 0.05초 정도인데,
실제 총 걸린 시간을 보면 머 거의 2박 3일을 꼬박 돌려아할 것 같구요.
팀장넘은 한시간내에 끝내도록 스크립터를 만들어라하는데.......
20만개의 테이타를 가진 40여개의 테이블을 어떤 수로 한시간에 작살낸단 말입니까..
혹 고수분들 중에 최적화에 도움을 주실분이 계시면,
복~ 받으실 거예요~
감사합니다.
참고로, 각 테이블에 사용되는 키들엔 인덱스를 걸어두었고요.
때때론 테이블에 너무 많은 인덱스가 있어, 용량이 실제 데이타의 3배인 경우도 있더군요.
클라이언트 쪽에서 인덱스를 무지 붙여두었더군요..
|