sql

table 건수가 많을 경우 delete 보단 truncate 가 낫다

초이짬 2018. 11. 12. 11:30
728x90

오라클에서 이관 작업중에 수시로 테이블을 delete 하고 새로 넣는데 700만건 까진 그럭저럭 5분안으로 되었다

1000만건이 넘어가는 경우 그리고 디비가 busy 할 경우 30분이 지나도 반응이 없고 rock 도 걸리지 않았다

delete 의 경우는 건당 undo 및 로그에 대한 기록을 하면서 진행되기에 truncate 를 하지 않고 하는 습관 때문에

많이 시간과 리소스가 소모 되었다 취소를 하고 커넥션도 끊고 새로 truncate 를 날려도 리소스가 사용중이라는 메시지가

나왔다.. 내가 시간이 진행된 만큼 rollback이 돌아서 1시간이상을 이러지도 저러지도 못하는 문제가 생겻다..

truncate 를 자주 안쓰고 내용은 알지만 데이터가 크고 리소스가 소모가 심할땐 꼭truncate 로 진행을 해야겟다.

delete 는 로그를 남기고 truncate 는 안남기니 당연히 실행 속도 차이가 크고 데이터가 클수록 그 차이는 더욱 커진다

728x90