본문 바로가기
Database2026년 6월 16일2분 읽기

소프트 삭제 vs 하드 삭제, 무엇을 선택할까

YS
김영삼
조회 320
소프트 삭제 vs 하드 삭제, 무엇을 선택할까

핵심 요약

복구·감사·참조 무결성이 중요하면 소프트 삭제(deleted_at 표시), 개인정보 삭제 의무·단순함·용량이 중요하면 하드 삭제다. 소프트 삭제는 모든 조회에 WHERE deleted_at IS NULL이 붙어야 하고 유니크 제약이 까다로워지는 비용이 있다.

1. 비교

소프트하드
복구쉬움백업 필요
쿼리 복잡도필터 항상 필요단순
개인정보 삭제실제 미삭제(주의)완전 삭제

2. 소프트 삭제 주의

  • 유니크 제약: 삭제된 행과 새 행의 email 충돌 → 부분 인덱스(WHERE deleted_at IS NULL)
  • 모든 조회에 필터 누락하면 유령 데이터 노출 — ORM 전역 스코프로 강제
  • 오래된 소프트 삭제는 주기적 하드 purge로 용량 관리

3. 함정

  • 개인정보 보호법상 "삭제 요청"은 실제 삭제가 필요할 수 있다 — 소프트만으론 위반 소지
  • 집계·통계에서 삭제 행을 빼먹거나 중복 포함하기 쉽다

자주 묻는 질문

소프트 삭제가 항상 더 안전한가요?

복구엔 유리하지만 개인정보 삭제 의무를 못 지킬 수 있고 쿼리·제약이 복잡해집니다. 법적 삭제 요건이 있는 데이터는 하드 삭제 또는 익명화를 병행하세요.

유니크 이메일이 소프트 삭제와 충돌해요.

활성 행만 대상으로 하는 부분 유니크 인덱스(WHERE deleted_at IS NULL)를 쓰면 삭제된 행과 충돌하지 않습니다.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록