본문 바로가기

ORACLE

delete와 commit, rollback

3천만건 짜리 테이블을


delete from table3000만  하면..


한 2시간 걸려서 3천만 record deleted라고 나올 것이다.


이때 실제 디스크에서 데이터가 삭제 되었을까..?


여기서 commit을 하면 0.1초만에 committed라고 나오지만


rollback을 치면 다시 2시간 정도가 걸려야지만 rollback이 완료된다.


delete중 시스템을 내려버리면?


다시 시스템을 올릴때 delete하기전의 데이터로 복구를 해놓으며 이것 역시


delete한 만큼의 시간이 소요된다. delete를 하게되면 실제 commit을 하지 않더라도


데이터를 삭제되고 있으며 이를 rollback을 하게 되면 롤백 세그멘트에서 다시


예전 데이터를 가져와서 rollback을 시키기 때문에 시간이 올래걸리는 것이다.