DB/Database 기초

[Database 기초] 더티 쓰기(Dirty Write)란?

프로호구래머 2019. 7. 15. 23:00

Dirty Write을 한국말로 직역을 해보자면 '더럽게 쓰기'라고 해석할 수 있을 것이다. 

'더럽게 쓰기'라는 말 그대로 Database에 저장 되어 있는 데이터가 무분별하게 쓰여지고 쓰여진 과정은 상관없이 마지막에 갱신한 것만이 데이터의 내용에 반영되는 경우이다.

 

그러면 어떻게 더럽게 쓰여지나 예시를 하나 들어보자.

 

만약 내가 실수로 똑같은 한글파일을 두 개를 열어 두었다고 가정하자.

그리고 나는 내가 두 개의 한글파일을 열었는지 모르고있다.

나는 그 사실도 모른채 열심히 한글파일의 내용을 수정해 놓고 저장을하고 수정된 한글파일을 종료 하였다.

그 후, 내 동생이 컴퓨터를 사용하기 위해 컴퓨터를 사용하다가 사용 다한 컴퓨터를 종료하기위해 아까 내가 켜두었던 다른 한글파일을 종료하면서 착한 동생은 한글 파일을 저장 하고 종료를 하게되었다. 

그러면 한글파일의 현재 상태는 어떻게 되었을까? 당연히 처음에 내가 수정했던 내용은 한글파일에 반영이 되어 있지 않고, 수정하기 전인 처음 상태로 돌아갔을 것이다.

 

이처럼 사용자가 원치않은 결과를 가져 올 수 있는것이 더티 쓰기(Dirty Write)이다. 

 

이를 예방하기 위해서는 

  1. 동일한 한글파일을 한 번에 두 개 이상 열어 두지 못하게 할 수도 있고,
  2. 처음 열었던 한글파일만 저장이 되고, 나중에 열었던 한글파일은 읽기전용으로 열리게 했어야 했다.