비관적 락 / SELECT ... FOR UPDATE / PESSIMISTIC_WRITE
2026.08.31
비관적 락은 “이 데이터는 충돌할 가능성이 높다”고 보고, 한 트랜잭션이 수정하려는 데이터를 잡고 있는 동안 다른 트랜잭션이 기다리게 만드는 방식Transaction ASELECT ... FOR UPDATE→ Product 행 Lock 획득Transaction B같은 Product 조회 시도→ 기다림A재고 차감COMMIT→ Lock 해제B이제 조회→ A가 반영한 최신 재고 확인→ 차감 1. 왜 이름이 "비관적" 락일까?처음부터 "여러 사용자가 같은 데이터를 동시에 수정하면 충돌할 가능성이 높다"고 생각하기 때문.그래서 충돌이 실제로 일어난 뒤 처리하는 것이 아니라, "아예 먼저 잠가놓고 다른 트랜잭션이 기다리게 하자"는 접근 2. 문제 상황DB stock = 100Transaction ASELECT ..