논리 삭제 vs 물리 삭제

데이터베이스에서 레코드를 삭제하는 두 가지 방식으로, 실제로 데이터를 지우는지 여부에 따라 구분됩니다.

물리 삭제 (Hard Delete)

DELETE 명령어로 데이터를 실제로 제거하는 방식입니다.

delete from member where id = 1;

저장 공간을 확보하고 테이블 크기를 줄여 검색 속도 향상을 기대할 수 있지만, 삭제된 데이터를 복구하기 어렵고 이후 비즈니스 의사결정에 활용할 수 없다는 단점이 있습니다.

논리 삭제 (Soft Delete)

UPDATE로 삭제 여부를 나타내는 컬럼(deleted_at, is_deleted 등)만 변경하고 실제 데이터는 남겨두는 방식입니다.

update member set deleted_at = curdate() where id = 1;
select * from member where deleted_at is null;

데이터 복구가 쉽고 통계·감사 등 비즈니스 의사결정에 활용할 수 있지만, 테이블에 삭제되지 않은 데이터가 계속 쌓여 성능에 악영향을 줄 수 있고, 조회 시 논리 삭제된 데이터를 제외하는 조건을 빠뜨리는 실수가 발생할 수 있습니다.

비교

구분물리 삭제논리 삭제
방식DELETEUPDATE
복구어려움쉬움
저장 공간확보됨계속 증가
조회 성능영향 없음삭제 데이터 누적 시 저하 가능
실수 위험낮음조회 조건 누락 위험

핵심 정리

물리 삭제는 저장 공간과 조회 성능 면에서 유리하지만 복구가 불가능하고, 논리 삭제는 데이터 복구와 활용이 가능하지만 테이블 비대화와 조회 조건 누락 위험을 관리해야 합니다.

→ 논리 삭제와 물리 삭제의 차이점은 무엇인가요?

CSLOG에서 보기