CS지식

두잇 두두 2024. 10. 10. 12:52
728x90

동시성 제어

데이터 무결성을 침해하지 않고 동시에 트랜잭션을 처리할 때 이를 제어하는 방법을 총칭

 

LOCK

동시성 제어의 한 방법으로, 데이터에 잠금을 걸어 읽기/변경/삭제 등을 제한하는 수단

 

낙관적인 락: 락을 사용하지 않는 락 방법

  • 충돌이 발생하지 않는다고 가정
  • Version Column을 추가(number, hash, timestamp 등)
  • DB에서 처음 읽어온 version 기억
  • update 시 현재 db의 version과 다르면 롤백
  • 속도 빠름

 

비관적인 락: 충돌이 자주 발생할 것이라고 가정

  • TABLE or ROW에 LOCK 걸고 트랜잭션 작업
  • 다른 트랜잭션은 LOCK 획득까지 대기
  • 해당 작업 완료 시 LOCK 해제
  • 속도 느림

 

실전 적용:

콘서트 티케팅: SECOND LOST UPDATES 일어 날 수 있음 => 비관적인 락이 50% 이상 성능