본문 바로가기
Development/Java

[Spring In Action]Transaction 동시성의 문제점

by 폴피드 2011. 10. 7.
728x90
반응형
- Dirty Read
  Transaction에서 다른 Transaction에 의해 변경됐지만 아직 커밋되지 않은 데이터를 읽어버리는 문제.
  이 데이터가 커밋되지 않고 롤백 됐을경우 첫번째 Transaction에서 읽은 데이터는 유요하지 않은 데이터가 된다.

- NonRepeatable Read
  Transaction이 같은 질의를 2번 이상 수행할때 서로 다른 데이터를 얻기 되는것을 말한다. 
  각 질의 사이에 다른 Transaction이 데이터를 변경하는 경우에 발생한다. 

- Phantom Read 
  Transaction이 둘 이상의 데이터 행을 읽은 다음, 동시에 다른 Transaction이 추가 행을 삽입할때 발생한다.
  첫번째 질의에는 없어떤 행이 두번째 질의에서는 나타나게된다.

Nonrepeatable Read와 Phantom Read 의 차이가 헷갈려서 인터넷을 찾아본 결과, 
Nonrepeatable Read는 Transaction 중간에 Update나 Delete가 끼어들어 데이터의 변형이 일어났을 경우이고
Phantom Read는  중간에 Insert가 수행되어서 행이 추가되는 경우라는 차이가 있다고 한다.  
728x90
반응형