본문
물리삭제와 논리삭제
# 물리삭제와 논리삭제
# 데이터의 물리삭제
DELETE 명령을 이용해 실제로 행을 삭제하는 것을 의미
# 데이터의 논리삭제
삭제 플래그를 이용하여 데이터가 삭제된 것처럼 가정하는 삭제 방법
테이블에서 실제로 행을 삭제하는 대신, UPDATE 명령을 이용해 '삭제플래그'의 값을 유효하게 갱신하두자는 발상에 의한 삭제방법을 말한다. 실제 테이블 안에 데이터는 남아있지만, 참조할 때에는 '삭제플래그'가 삭제로 설정된 행을 제외하는 SELECT 명령을 실행한다.
ex) SELECT * FROM xxxx WHERE 삭제플래그 <>1
# 논리삭제 장점
- 데이터를 삭제하지 않기 때문에 삭제되기 전의 상태로 간단히 되돌릴 수 있음
# 논리삭제 단점
- 삭제해도 DB 저장공간이 늘어나지 않음 (DB 크기가 증가하면 검색속도가 떨어짐)
- 애플리케이션 측 프로그램에서는 DELETE 명령임에도 불구하고 UPDATE 명령을 실행하므로 혼란을 야기할 수 있음
# 삭제방법 선택
SNS 서비스처럼 사용자의 개인정보를 다루는 시스템에서는 사용자가 탈퇴한 경우 데이터를 삭제한다. 이때 개인정보를 취급하는 마스터 테이블에서 삭제할 경우에는 물리삭제를 하는 편이 안전할 것이다. 개인정보 유출을 미연에 방지하는 측면에서도 좋은 선택이라고 할 수 있다.
반면, 쇼핑 사이트의 경우 사용자가 주문을 취소할 경우에도 데이터를 삭제한다. 이러한 경우에는 논리삭제 방법을 많이 사용한다. 주문이 취소되었다고해도 발주는 된 것으로, 해당 정보가 완전히 불필요한 것이라고는 말할 수 없다. 이러한 데이터는 특히 주문 관련 통계를 낼 때 유용하게 사용할 수 있기 때문이다.
따라서 물리삭제와 논리삭제는 어느 쪽이 좋은지 따지기보다는 상황에 따라 용도에 맞게 데이터 삭제 방법을 선택하는 것이 중요하다.
- 출처 : 하루 30분 36강으로 배우는 완전 초보의 sql 따라잡기
댓글