저희 프로젝트에서 사용한 InnoDB(MariaDB/MySQL) 기준으로 설명하겠습니다
행 단위(ROW) 잠금:
UPDATE ... WHERE id = :id
는 PK로 그 행에 X(배타) 락을 검
T1, T2 경합 예시
PROCESSING
으로 바꾸고 커밋.PROCESSING
이라 조건 불일치(0행).즉, 락 + 조건부 업데이트로 중복 처리를 물리적으로/논리적으로 동시에 차단
참고: MySQL의 UPDATE는 current read(스냅샷이 아닌 최신 버전)라서 위 동작이 보장 격리 수준(REPEATABLE READ/READ COMMITTED)이 달라도 이 패턴은 안전하게 작동