• 먼저 사용하는 사람 다 쓸때까지 다른 사람은 못 건드리게 막는 것
  • 동시에 많은 문제 몰리는 상황에서 동시성 문제는 필연적
  • 트랜잭션만으로는 해결 불가
  • 락 필요성

락 방식의 기본 철학

  • 비관적 락:
    • 동시 접근 트랜잭션간 충돌 당연히 발생한다고 가정
    • 데이터 변경 전에 락 먼저 획득
  • 낙관적 락
    • 동시 접근 하더라도 충돌이 자주 발생하지 않을 것 이란 가정
    • 우선 읽기와 처리 자유롭게 하고 최종 커밋(또는 업데이트) 시점에 충돌확인하여 문제 있으면 다시 처리(재시도) 함

SELECT 와 공유락은 다르다!!!

  • MySQL InnoDB는 SELECT시 공유락 안걸고 조회함!
  • 배타락을 그 레코드에 걸든 안걸든 SELECT 시 공유락 걸지 않으니 조회가 가능한 것
    • S Lock은 읽는 동안 수정 발생않게 잠그는 것
    • X Lock은 쓰는 동안 수정이 발생않게 잠그는 것
  • 별 차이 없어 보이지만, 이 둘의 결정적 차이는 락 사이의 호환 여부!