Lost Update

Lost Update Lost Update 는 여러 트랜잭션이 같은 행을 동시에 읽어 수정할 때 한쪽 갱신이 나중 갱신에 의해 덮여 사라지는 현상이다. MVCC(스냅샷) 는 일부 읽기 문제를 막지만, 클라이언트 측에서 Read–Modify–Write 패턴을 쓰면 여전히 발생할 수 있다. 실무 대응은 가능한 경우 UPDATE … SET v = v + 1 처럼 원자적 SQL 사용 충돌이 잦지 않으면 낙관적 잠금(버전/타임스탬프 비교) 으로 충돌 감지 후 재시도 핫스팟엔 비관적 잠금(SELECT … FOR UPDATE) 사용 강제 일관성이 필요하면 DBMS 의 Serializable/SSI 선택이다 운영에서는 충돌률·재시도율·락 대기 시간을 관측하고 재시도·백오프 정책을 설계해야 한다. ...

September 12, 2025 · 44 min · Me

Write Skew

Write Skew Write Skew 는 두 트랜잭션이 같은 **판단 (읽기)**을 하고 각자 다른 레코드를 갱신해서 결과적으로 비즈니스 규칙이 깨지는 현상이다. 예: 두 의사가 동시에 당직 해제 판단 → 최종적으로 아무도 남지 않는 상황. Snapshot Isolation 은 읽기는 스냅샷에서 빠르게 처리하고 쓰기 충돌 (같은 행을 동시에 쓰는 경우) 만 검사하기 때문에 이런 상황을 허용할 수 있다. 예방은 DB 수준 (Serializable/SSI, predicate/next-key locks) 이나 애플리케이션 수준 (guard row, 명시적 락, 집계 테이블) 으로 수행하며, 운영적으로는 직렬화 오류율을 모니터링하고 재시도 정책을 설계해야 한다. ...

September 12, 2025 · 41 min · Me