본문 바로가기
공부/DATABASE

[DB]DROP, TRUNCATE, DELETE 정리

by happyeuni 2022. 10. 19.

TRUNCATE

테이블의 데이터를 전부 삭제하고 사용하고 있던 공간을 반납

  • DDL(데이터 정의 언어)
  • 해당 테이블의 데이터, 인덱스가 모두 삭제되지만 테이블 자체가 지워지는 것은 아님
  • 최초 테이블이 만들어진 상태. 데이터가 1건도 없는 상태로 용량도 줄고 인덱스도 모두 삭제됨. 컬럼값만 남아있음
  • 트랜잭션 로그에 한 번만 기록되므로 DELETE보다 성능 면에서 더 빠름
  • 인덱싱 된 VIEW 와 함께 사용 불가능
  • 테이블에서 이 명령어를 사용하려면 테이블에 대한 ALTER권한이 필요
  • TRUNCATE는 테이블 잠금을 사용하여 실행되지만, 각 행은 잠기지 않습니다.
    • 잠금(Lock) : 삽입, 삭제, 갱신 등의 트랜잭션이 수행되는 동안 특정 테이블 또는 행에 대해 CRUD작업을 할 수 없음.
  • 자동 COMMIT이 되어 ROLLBACK 불가능

TRUNCATE TABLE tablename;

DROP

테이블 자체를 삭제하는 명령어

  • DDL(데이터 정의 언어)
  • 테이블 자체가 모두 지워지며 해당 테이블에 생성되어 있던 인덱스도 삭제됨
  • 오라클 10g부터는 테이블이 삭제되는 것이 아니라 윈도우의 휴지통 개념처럼 잠시 삭제됨 그리고 테이블 이름이 BIN$..로 변경됨
  • 자동 COMMIT이 되어 ROLLBACK 불가능

DROP TABLE tablename;

DELETE

데이터만 지워지고 디스크 상의 공간은 그대로

  • DML(데이터 조작 언어)
  • 원하는 데이터만 골라서 삭제 가능
  • COMMIT 전이라면 ROLLBACK 가능
  • 삭제된 각 행에 대해 트랜잭션 로그 기록 → TRUCNCATE보다 느림
  • TRUNCATE보다 더 많은 트랜잭션 공간 사용
  • 행 잠금 사용하여 실행
  • 테이블 용량은 감소하지 않음

DELETE FROM tablename WHERE 조건;

 

출처 :

https://developer-talk.tistory.com/m/258

https://lee-mandu.tistory.com/m/476

댓글