TRUNCATE(DDL 명령어) VS DELETE(DML 명령어) - SQL
Posted In:
IT 지식
.
By lkh
트랜잭션 개념에 입각해서 TRUNCAATE와 DELETE 명령어의 차이점을 살펴보면, DELETE는 DML 명령어이기 때문에 롤백을 수해하면 삭제 이전으로 되돌릴 수 있습니다. 이렇게 삭제된 내용이 완전하게 데이터베이스에 적용되도록 하려면 사용자가 직접 커밋 명령을 수행해야 합니다. TRUNCAATE 명령은 해당 테이블의 모든 행을 잘라 내는 기능을 하는 DDL 명령어로서 자동으로 커밋이 발생합니다. 그렇기 때문에 삭제 이전으로 되돌릴 수 없다는 단점이 있습니다.
반면, 다음과 같은 장점이 있습니다. DELETE 는 롤백이 가능하다는 장점이 있지만 롤백을 위해서 무수히 많은 BEFORE IMAGE가 생성되어야 하므로 삭제하는 속도도 늦고 이를 위한 자원이 마련되어야 합니다. 그러므로 만일 명확히 삭제해야 하는 경우에는 DELETE보다는 TRUNCAATE를 사용하는 것이 효율적입니다.
TRUNCAATED와 DELETE 명령어는 또 다른 측면에서도 차이가 납니다. TRUNCAATE는 한 테이블에 속하는 모든 로우를 잘라 내지만, DELETE 명령어는 삭제하고자 하는 로우를 선택할 수 있습니다.
정리를 하면..
1. TRUNCATE은 모든 행을 삭제하지만 DELETE 명령어는 WHERE 절을 추가하여 조건에 만족하는 행만 삭제할 수 있다는 차이점이 있습니다.
2. DELTE는 DML 명렁어이기 때문에 롤백을 수행하면 삭제 이전으로 되돌릴 수 있습니다. TRUNCATE 명령은 해당 테이블의 모든 행을 잘라내는 기능을 하는 DDL 명령어로서 자동으로 커밋이 발생하여 삭제이전으로 되돌릴 수 없다는 단점이 있습니다.
0 Responses to TRUNCATE(DDL 명령어) VS DELETE(DML 명령어) - SQL
Something to say?