Concurrency Problem
Lost Update Problem — write-write conflict [참고]
- 동일한 레코드에 대해 두 개의 다른 트랜잭션이 동시에 수정을 하려고 할 때 발생함
- 첫 번째 트랜잭션이 레코드 수정 후 두번 째 트랜잭션이 레코드를 수정하면 첫 번째 수정은 없어지게 됨
해결책
- 트랜잭션 Isolation level을 높이기 ( Repeatable Read 로 격리 수준이 올라가면 데이터베이스는 효율적으로 체크를 수행할 수 있음)
- Optimistic locking →
- Pessimistic locking
Atomic write operation
- 레코드를 메모리 상에 읽어 두고 새로운 값을 동시에 바로 쓰게 됨. Atomic write operation은 read-modify-write 사이클을 반복적으로 수행할 필요를 없애줌
- 레코드가 읽어지는 동시에 써짐. 그래서 lost update problem을 피해갈 수 있음
- Temporary Update Problem
- Incorrect Summary Problem
- Unrepeatable Read Problem
- Phantom Read Problem