
DB 트랜잭션 동시성 제어: Lock, MVCC 그리고 Oracle Restart Mechanism
두줄요약
Lock, MVCC, 격리 수준을 바탕으로 DB 트랜잭션 동시성 제어를 설명했습니다. Oracle Restart Mechanism과 비관적·낙관적 제어의 선택 기준을 정리했습니다.
구조와 흐름
- Lock 기반 제어의 최신 데이터(Current Read) 기준 변경과 Lock 대기
- MVCC의 이전 버전 활용, Consistent Read 기반 대상 식별, Current Read 기반 실제 변경
- Oracle UPDATE의 조건 의미 변경 감지 후 롤백·재검색하는 Restart Mechanism
선택 이유
- 충돌 가능성이 높은 재고·좌석 예약·금융 거래에
FOR UPDATE기반 비관적 제어 - 충돌 빈도가 낮은 일반 서비스에 버전 검증과 0건 갱신 감지 기반 낙관적 제어
- 정합성 중요도, 변경 빈도, 동시 사용자 수, 트랜잭션 범위를 고려한 격리 수준 선택
트레이드오프
- 높은 격리 수준의 일관성 강화와 동시성·처리량 저하 가능성
- 비관적 제어의 강한 변경 제어와 Blocking·Deadlock 위험
- MVCC의 읽기·쓰기 충돌 감소와 Undo·버전 관리 부담, Write Skew 가능성
주의할 점
- 문장 수준 일관성과 트랜잭션 전체 일관성의 구분
- 동일 SQL의 Oracle·PostgreSQL 간 동시 UPDATE 처리 방식 차이
- MVCC 사용만으로 업무 규칙과 데이터 정합성 자동 보장 불가



