[SQL] Truncate vs Delete

리본24·2024년 9월 6일
post-thumbnail

- 들어가면서

최근에 한 블로그를 봤는데 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도 있는지는 모르겠다..? 아무튼 책에서 배운 내용을 기준으로 하면 그렇다.

profile
기록하고 소화해보자! 소화가 안되거나 까먹으면 다시 꺼내서 보자! 오늘의 나는 어제의 나보다 강하다!

0개의 댓글