← 질문 목록
#179깊이 0

트랜잭션 격리 수준을 결정하는 기준은 무엇인가?

데이터베이스심화트랜잭션

답변 연습

내 답변 적어보기접힘
이 브라우저에 자동 저장 · 0자
모범답안 확인하기내 답변 뒤에 열어보세요

격리 수준 이름부터 고르지 않는다. 동시에 실행돼도 절대 깨지면 안 되는 업무 규칙과, 충돌하면 다시 시도할 수 있는지를 먼저 본다.

수준보장하는 최소 범위애플리케이션이 다룰 일
Read Committed완료되지 않은 변경은 읽지 않음같은 트랜잭션의 두 조회가 다른 결과를 보여도 되는지
Repeatable Read한 트랜잭션의 반복 조회를 안정적으로 유지구현별 팬텀·쓰기 충돌 처리
Serializable성공한 결과가 순차 실행 중 하나와 같음직렬화 실패 시 트랜잭션 전체 재시도

예를 들어 남은 좌석을 읽고 예약하는 두 트랜잭션은 각자만 보면 정상이다. 둘이 같이 성공하면 수용 인원을 넘길 수 있다. 이 규칙을 지키려면 원자적 갱신, 명시적 잠금, Serializable 중 하나로 경합을 다뤄야 한다.

데이터베이스마다 같은 이름을 다르게 구현한다. PostgreSQL의 기본값은 Read Committed지만 InnoDB의 기본값은 Repeatable Read다. 기본값이 업무에 맞는다는 뜻은 아니다.

수준을 올리면 항상 잠금이 늘어난다고도 단정할 수 없다. MVCC, 간격 잠금, 서로 다른 직렬화 구현이 있다. 실제 충돌률·대기 시간·재시도 횟수를 재고 선택한다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

트랜잭션 격리 수준을 결정하는 기준은 무엇인가?
트랜잭션 격리 수준을 결정하는 기준은 무엇인가? · CS 길라잡이