같은 행에서는 읽기만 함께 가고, 쓰기는 항상 순서를 기다립니다

아래 표는 같은 행에 이미 걸린 락과 새로 들어온 요청이 만났을 때 무엇이 즉시 진행되고 무엇이 대기하는지 보여줍니다.

판단 기준: 먼저 잡힌 락 vs 뒤늦은 요청
공유 대상

하나의 행(row) 위에서 호환성을 판단

락은 같은 데이터에 겹칠 때만 충돌합니다. 그래서 핵심은 “이 행에 이미 무엇이 잡혀 있는가”와 “지금 들어온 요청이 읽기인가 쓰기인가”입니다.

행에 먼저 잡힌 락 ↓
뒤에 들어온 요청 →
새 요청
S-Lock
새 요청
X-Lock
기존 상태
S-Lock
허용

읽기 + 읽기

공유 락은 서로 양보할 수 있어 여러 트랜잭션이 동시에 조회합니다.

대기

읽기 중에는 쓰기 보류

기존 조회가 끝나서 공유 락이 모두 풀릴 때까지 쓰기 요청은 멈춥니다.

기존 상태
X-Lock
대기

쓰기 중에는 읽기도 대기

배타 락은 행 내용을 바꾸는 동안 다른 트랜잭션의 접근을 막습니다.

대기

쓰기 + 쓰기 동시 진행 불가

같은 행을 바꾸는 작업은 한 번에 하나만 실행되어 일관성을 지킵니다.

한 줄 정리: S + S만 공존하고, 쓰기(X-Lock)가 끼는 조합은 모두 대기합니다. 즉, 읽기는 공유되지만 쓰기는 같은 행에서 직렬화됩니다.