티스토리 뷰

테이블 데이터를 지울때 보통 DELETE, TRUNCATE, DROP 셋 중 하나를 쓰는데
위 명령어들은 다음과 같은 차이점이 있다

DELETE 
  • commit 전에는 롤백이 가능하다
  • where 절 추가가능
  • data는 삭제되지만 테이블 저장공간은 삭제되지 않는다.

TRUNCATE
  • 실행하면 롤백 불가능
  • where 절 사용불가능
  • 인덱스를 포함한 테이블 데이터 삭제, 저장공간 역시 삭제.

DROP
  • 테이블 자체를 삭제


대용량 데이터를 DELETE로 삭제할 경우 눈에 보이는 데이터는 제거되었지만 HWM(High Warter Mark)는 기존 데이터 위치에 그대로 있기 때문에 데이터 delete 후 몇건 없는 데이터를 select 할때 대용량 데이터를 full scan 하는것처럼 성능저하 현상을 보일수 있다. 
HWM 까지 초기위치 (0) 으로 이동 시키기 위해서는 TRUNCATE 명령어를 사용해 데이터를 삭제해야 한다.

댓글