mingming

Oracle - DELETE & TRUNCATE 본문

새싹 하이브리드 클라우드/Database

Oracle - DELETE & TRUNCATE

mingming_96 2023. 10. 7. 17:00

DLETE 와 TRUNCATE

DELETE 와 TRUNCATE 는 둘 다 데이터 베이스 테이블에서 데이터를 제거하는 SQL 명령문입니다.

 

DELETE

  • DELETE 문은 데이터 베이스 테이블에서 특정 조건을 만족하는 행을 삭제하는데 사용됩니다.
  • DELETE 문은 COMMIT 전 롤백(undo)이 가능하며, 행을 삭제하기 전에 트랜잭션 로그에 해당 삭제 작업을 기록합니다. 따라서 롤백을 실행해 이전 상태로 데이터를 복원할 수 있습니다.
  • DELETE 문은 조건에 따라 삭제할 행을 선택적으로 지정할 수 있으며, 특정 조건을 만족하는 행만 삭제할 수 있습니다. 

TRUNCATE

  • TRUNCATE 문은 데이터베이스 테이블에서 모든 행을 한 번에 제거하는데 사용됩니다.
  • TRUNCATE 문은 롤백이 불가능하며 삭제 작업을 트랜잭션 로그에 기록하지 않습니다. 따라서 롤백 후에 데이터는 연구적으로 삭제됩니다.
  • TRUNCATE 문은 테이블의 모든 행을 삭제하므로 조건을 지정하여 일부 행만 삭제할 수 없습니다.

 

DELETE 와 TRUNCATE 차이

  • DELETE는 DML 문으로 명령을 실행할 때 트랜잭션이 발생하여 오버헤드가 커지게 됩니다. 명령 실행 후 UNDO 에 작업 내용을 기록하게 되고, 불필요한 리소스들이 데이터 베이스 안에 존재하게 됩니다.
  • 반면, TRUNCATE 문은 DML 문이 아닌 DDL 문으로 트랜잭션을 발생시키지 않습니다. 삭제 속도가 매우 빠릅니다. 
  DELETE TRUNCATE
종류 DML DDL
COMMIT 사용자 COMMIT  AUTO COMMIT
ROLLBACK 가능 불가능
로그 남김 남기지 않음
작업 속도 느림 빠름
저장 공간 유지 반납

 

'새싹 하이브리드 클라우드 > Database' 카테고리의 다른 글

Oracle - 집합연산자  (1) 2023.10.08
Oracle - Subquery  (0) 2023.10.07
Oracle - 제약 조건 & Subquery  (0) 2023.10.07
Oracle - SQL (DDL)  (2) 2023.10.07
Oracle - SQL (DML)  (0) 2023.10.07