- 들어가면서
최근에 한 블로그를 봤는데 Truncate와 Delete, 그리고 Drop에 대해서 다루는 내용이었다.
그런데 팔로워가 7.4K나 되는데 가장 중요한 부분에 대한 언급이 없어서 아쉬웠다..ㅠㅠ
그래서 다시 정리하는 차원에서 이 글을 작성해본다.
- Delete
- DML(Data Manipulation Language)
- DML이므로 Transaction을 지원하고 Rollback이 가능하다.
- Where절을 지정하여 데이터를 선택적으로 삭제 가능.
- 속도가 상대적으로 느림.
- 특정 행을 삭제하였다는 로그가 기록된다.(각 행의 삭제를 추적가능)
- 테이블의 모든 데이터를 삭제하더라도 실제 디스크 공간은 줄지 않음. 추가 작업필요.
- Truncate
- DDL(Data Definition Language)
- DDL이므로 Transaction을 지원하지 않고 Rollback이 불가능하다.
- 속도가 상대적으로 빠르다.
- ID열의 Auto_increment가 초기화 된다.
- 테이블이 비워졌다는 최소한의 로그만 기록된다.
- 디스크 공간도 해제하거나 최소화 함.
- 잡담
7.4k 팔로워의 글에는 밑줄 처리한 부분이 빠져있었다. 어찌보면 가장 큰 핵심인 것 같은데..?
Truncate를 Rollback을 지원하는 DBMS도 있는지는 모르겠다..? 아무튼 책에서 배운 내용을 기준으로 하면 그렇다.