HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🤩
개발
/데이터베이스(Database)/
Database
Database
/
🎼
Concurrency Control
🎼

Concurrency Control

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