목록 보기
DB 트랜잭션 동시성 제어: Lock, MVCC 그리고 Oracle Restart Mechanism
백엔드

DB 트랜잭션 동시성 제어: Lock, MVCC 그리고 Oracle Restart Mechanism

CSLEE
CSLEE
2026년 10월 26일

두줄요약

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 사용만으로 업무 규칙과 데이터 정합성 자동 보장 불가

다음 읽기

#transaction 주제를 다룬 다른 회사 글

실무에서 만나는 DB isolation level

MySQL 기본 격리 수준인 REPEATABLE READ 때문에 결제 트랜잭션에서 오래된 잔액이 유지되는 문제를 겪었습니다. 락 위치와 격리 수준을 조정해 동시성 이슈를 해결하는 과정을 정리했습니다.

네이버 페이
네이버 페이
백엔드
전체 보기

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...