많은 양의 데이타를 삭제해야 하는데 delete로 쿼리 분석기에서 지우면 디비가 먹통이 되버려서 top으로 조금씩 뽑아서 지우고 있는데
그럴려니 시간이 너무많이 걸리드라구요.
그래서 무슨좋은 방법이 있을까요?? 시간좀 걸리더라도 한방에 먹통안되게 지우는 방법이 있다면 알고 싶습니다.
Comment 3
-
자리비움
2015.05.26 14:57
-
향지
2015.05.27 18:16
while 문 안에 1초에 50건씩 삭제 돌리면 안되나요?
-
한태
2016.02.04 20:19
대량의 데이터를 delete 하더라도, 조금씩 나눠서 실행하는게 좋습니다. 만약에 운영중인 DB라면 더욱 그렇습니다.
삭제하는 SP를 실행하고 0.1초 후에 다시 SP를 실행하는 하는 식으로 트랜잭션을 짧게 가져가는게 락을 방지하고
전체 운영이 부담을 덜 줍니다. 또한 통으로 삭제를 실행하다 문제가 발생하면 그만큼의 작업이 다시 롤백되는 시간이 오래 소요되기에,
문제가 발생하더라도 금방 작업을 중지하고 이전 작업을 따로 롤백해줄 수 있도록 소량으로 delete를 해주는 것이 좋습니다.
운영중인 db에서 delete 해야 하는거라면, 시간이 걸리더라도 조금씩 지우셔야 합니다.
점검이 가능하다면,
필요한 데이터만 새로운 테이블에 옮긴 후 인덱스를 설정하고 rename 하는 방법이 있습니다.