물리삭제 논리삭제

유석현(SeokHyun Yu)·2022년 8월 11일
0

SQL

목록 보기
19/45
post-thumbnail

서론

데이터베이스에서 데이터를 삭제하는 방법은 용도에 따라 크게 '물리삭제''논리삭제'의 두 가지로 나뉜다.

하지만 물리삭제와 논리삭제는 전용 SQL 명령이 따로 존재하지 않는다.

지금부터 설명할 내용은 SQL 명령에 관한 해설이라기 보다는 시스템 설계 분야에 관한 내용이다.


1. 두 종류의 삭제방법

데이터베이스에서 데이터를 삭제할 때 물리삭제논리삭제의 두 가지 방법을 고려할 수 있는데, 이는 SQL 명령이 두 가지 존재한다는 의미가 아니다.

'데이터를 삭제하는 두 가지 사고 방식'이 있다고 이해하면 쉽다.

먼저, 물리삭제는 SQL의 DELETE 명령을 사용해 직접 데이터를 삭제하자는 사고 방식이다.

삭제 대상 데이터는 필요없는 데이터이므로 DELETE 명령을 실행해서 테이블에서 삭제해버리자, 라는 지극히 자연스러운 발상에 의한 삭제방법을 말한다.

한편 논리삭제의 경우, 테이블에 '삭제플래그'와 같은 열을 미리 준비해 둔다.

즉, 테이블에서 실제로 행을 삭제하는 대신, UPDATE 명령을 이용해 '삭제플래그'의 값을 유효하게 갱신해두자는 발상에 의한 삭제방법을 말한다.

실제 테이블 안에 데이터는 남아있지만, 참조할 때는 '삭제플래그'가 설정된 행을 제외하는 SELECT 명령을 실행한다.

결과적으로는 해당 행이 삭제된 것처럼 보인다.

그렇다면 논리삭제는 물리삭제에 비해 어떤 장점이 있길래 쓰이는 것일까?

일단 논리삭제는 데이터를 삭제하기 않기 때문에 삭제되기 전의 상태로 간단히 되돌릴 수 있다는 것을 꼽을 수 있다.

한편 단점으로는 삭제해도 데이터베이스의 저장공간이 늘어나지 않는 점, 그리고 데이터베이스의 크기가 증가함에 따라 탐색속도가 떨어지는 점을 들 수 있다.

뿐만 아니라 애플리케이션 측 프로그램에서는 삭제임에도 불구하고 UPDATE 명령을 실행하므로 혼란을 야기하기도 한다.


2. 삭제방법 선택하기

어떤 방법으로 데이터를 삭제할 것인지는 시스템의 특성이나 테이블에 저장되어 있는 데이터의 특성에 다라 다르기 때문에 단정지어 말할 수는 없다.

예를 들어, SNS 서비스처럼 사용자의 개인정보를 다루는 시스템에서는 데이터를 물리 삭제한다.

반면 쇼핑 사이트의 경우 사용자가 주문을 취소하면 데이터를 삭제하는데, 이때는 논리 삭제 방법을 많이 사용한다.

주문이 취소되었다고 해도 발주는 된 것이므로, 해당 정보가 완전히 불필요한 것이라고는 말할 수 없기 때문이다.

이렇게 물리삭제와 논리삭제는 어느 쪽이 좋은지 따지기보다는 상황에 따라 용도에 맞게 삭제 방법을 선택하는 것이 중요하다.

profile
Backend Engineer

0개의 댓글