심화/DB

[DB] Soft Delete (논리 삭제) vs Hard Delete (물리 삭제)

annovation 2025. 10. 16. 22:30

Soft Delete (논리 삭제)

 

💡Soft Delete 란?

  • 논리 삭제는 데이터를 실제로 삭제하지 않고 '삭제됨'으로 표시하는 방식이다.
  • 데이터는 물리적으로 데이터베이스에 남아있지만, 플래그나 상태 필드를 통해 삭제 여부를 관리한다.

💡구현 방식

  • 일반적으로 테이블에 is_deleteddeleted_atstatus와 같은 컬럼을 추가하여 삭제 상태를 관리한다.

💡장점

  • 논리 삭제는 삭제된 데이터를 쉽게 복구할 수 있다.
  • 감사 추적(Audit Trail)이 필요한 경우 변경 이력을 유지할 수 있으며, 실수로 인한 데이터 손실 위험을 줄일 수 있다.
  • 여기서 감사 추적(Audit Trail)이란, 누가, 언제, 어떤 작업을 했는지와 그 결과를 시간순으로 기록해 두는 것을 말한다. 흔히 로그(log) 형태로 남긴다.

💡단점

  • 삭제된 데이터가 계속 저장되어 데이터베이스 용량이 증가한다.
  • 조회 시 삭제된 데이터를 필터링하는 추가 조건이 필요하여 쿼리가 복잡해지고, 사용자가 삭제된 데이터를 볼 수 있어 혼란을 야기할 수 있다.

Hard Delete (물리 삭제)

 

💡Hard Delete 란?

  • 물리 삭제는 데이터베이스에서 데이터를 완전히 제거하는 방식이다.
  • 한번 삭제되면 복구가 불가능하며, 더 이상 필요하지 않은 데이터를 제거할 때 사용된다.

💡구현 방식

  • SQL의 DELETE 문을 사용하여 레코드를 완전히 제거한다.

💡장점

  • 불필요한 데이터를 제거하여 저장 공간을 절약할 수 있다.
  • 삭제된 데이터가 완전히 사라져 데이터베이스 관리가 단순해지며, 추가 플래그나 조건 없이 쿼리 성능이 향상된다.

💡단점

  • 데이터가 영구적으로 제거되어 나중에 필요할 경우 복구할 수 없다.
  • 감사 추적을 위한 이력 기록이 남지 않으며, 외래 키 제약조건이 있는 경우 연관된 데이터 처리가 복잡해진다.

요약

구분 논리 삭제(Soft Delete) 물리 삭제(Hard Delete)
데이터 보존 데이터베이스에 유지됨 완전히 제거됨
복구 가능성 복구 가능 복구 불가능
저장 공간 용량 증가 용량 절약
쿼리 복잡도 필터링 조건 필요 단순함
감사 추적 이력 유지 가능 이력 없음
구현 방식 플래그 또는 상태 컬럼 추가 DELETE 문 사용

 


출처

https://www.geeksforgeeks.org/dbms/difference-between-soft-delete-and-hard-delete/

 

Difference Between Soft Delete and Hard Delete - GeeksforGeeks

Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across domains-spanning computer science and programming, school education, upskilling, commerce, software tools, competitive exams, and more.

www.geeksforgeeks.org

'심화 > DB' 카테고리의 다른 글

[DB] existById, findById (업데이트 중..)  (0) 2025.11.10
[DB] NoSQL 장/단점  (0) 2025.10.28
[DB] NoSQL 특징  (0) 2025.10.27
[DB] Spring Boot 초기 데이터 세팅 (업데이트 중..)  (2) 2025.10.21
[DB] SQL 제약조건  (0) 2025.09.20