IT/CS

트랜잭션 격리 수준(Isolation Level) 완벽 정리 – READ COMMITTED부터 SERIALIZABLE까지

바다, 2026. 1. 7. 08:00
반응형

이 글은
트랜잭션(Transaction)과 ACID 개념 정리에 이어지는 내용이다.

ACID 중에서도
Isolation(격리성) 은 가장 중요하면서도
면접에서 가장 많이 헷갈리는 개념이다.

이번 글에서는
트랜잭션 격리 수준(Isolation Level)이 무엇인지,
각 단계가 무엇을 보장하고 왜 실무에서 다르게 선택되는지 정리한다.


1. 트랜잭션 격리 수준(Isolation Level)이란?

트랜잭션 격리 수준이란
여러 트랜잭션이 동시에 실행될 때
서로의 작업을 어디까지 볼 수 있도록 허용할 것인가를 정의한 기준이다.

즉,

  • 격리를 강하게 하면 → 안전하지만 느리다
  • 격리를 약하게 하면 → 빠르지만 위험하다

👉 정합성과 성능 사이의 트레이드오프다.


2. 격리 수준이 필요한 이유

동시에 여러 트랜잭션이 실행되면
다음과 같은 문제가 발생할 수 있다.

  • Dirty Read
  • Non-Repeatable Read
  • Phantom Read

이 문제들을 어디까지 허용할지 결정하는 것이
Isolation Level이다.


3. 대표적인 동시성 문제

Dirty Read

아직 커밋되지 않은 데이터를
다른 트랜잭션이 읽는 문제

Non-Repeatable Read

같은 데이터를 두 번 읽었는데
값이 달라지는 문제

Phantom Read

조건에 맞는 데이터 개수가
트랜잭션 도중 달라지는 문제


4. 트랜잭션 격리 수준 종류

SQL 표준에서는
다음 4가지 격리 수준을 정의한다.


4-1. READ UNCOMMITTED

  • 커밋되지 않은 데이터도 읽을 수 있음
  • Dirty Read 발생 가능
격리 수준 가장 낮음
실무에서 거의 사용하지 않음

4-2. READ COMMITTED

  • 커밋된 데이터만 읽을 수 있음
  • Dirty Read 방지
  • Non-Repeatable Read 발생 가능
대부분의 DB 기본값
(Oracle, PostgreSQL 등)

👉 실무에서 가장 많이 사용


4-3. REPEATABLE READ

  • 트랜잭션 동안 같은 데이터를 여러 번 읽어도 값이 변하지 않음
  • Dirty Read, Non-Repeatable Read 방지
  • Phantom Read 발생 가능
MySQL(InnoDB) 기본 격리 수준

4-4. SERIALIZABLE

  • 가장 높은 격리 수준
  • 모든 동시성 문제 방지
  • 성능 저하 큼
사실상 트랜잭션을 순차 실행
실무에서는 거의 사용하지 않음

5. 격리 수준별 문제 발생 여부 정리

Isolation Level Dirty Read Non-Repeatable Read Phantom Read
READ UNCOMMITTED O O O
READ COMMITTED X O O
REPEATABLE READ X X O
SERIALIZABLE X X X

6. 실무에서는 어떤 격리 수준을 선택할까?

대부분의 경우

  • READ COMMITTED 사용
  • 성능과 정합성의 균형이 좋음

높은 정합성이 필요한 경우

  • 금융, 결제, 재고 처리
  • REPEATABLE READ 또는 별도 Lock 전략 사용

👉 SERIALIZABLE은 최후의 수단


7. ACID의 Isolation은 100% 보장될까?

항상 그렇지는 않다.

  • 성능을 위해 격리 수준을 낮추기도 하고
  • 애플리케이션 레벨에서 보완하기도 한다

즉,
Isolation은 설정 + 설계로 함께 관리해야 한다.


8. 면접에서 자주 나오는 질문 & 답변

Q1. 트랜잭션 격리 수준이란 무엇인가요?

여러 트랜잭션이 동시에 실행될 때
서로의 데이터를 어디까지 볼 수 있는지 정의한 기준입니다.


Q2. READ COMMITTED를 가장 많이 쓰는 이유는?

Dirty Read를 방지하면서
성능 저하가 크지 않기 때문입니다.


Q3. SERIALIZABLE은 왜 잘 안 쓰나요?

동시성이 거의 사라져
성능이 급격히 저하되기 때문입니다.


Q4. Phantom Read란 무엇인가요?

같은 조건으로 조회했는데
트랜잭션 도중 결과 개수가 달라지는 현상입니다.


9. 한 줄 요약

  • Isolation Level은 정합성과 성능의 균형 설정
  • 실무 기본값은 READ COMMITTED
  • 가장 강력한 격리는 SERIALIZABLE

마무리

트랜잭션 격리 수준은
ACID 개념을 실제로 어떻게 적용할 것인가에 대한 문제다.

이 개념을 이해하면
트랜잭션 전파, Lock, 동시성 제어까지
자연스럽게 이어서 이해할 수 있다.

 

2026.01.06 - [IT/CS] - 트랜잭션(Transaction)과 ACID 개념 정리 – 백엔드 면접 필수

 

트랜잭션(Transaction)과 ACID 개념 정리 – 백엔드 면접 필수

백엔드 개발자 면접에서거의 빠지지 않고 등장하는 질문이 바로트랜잭션(Transaction)과 ACID이다.이 글에서는프레임워크나 구현 방식이 아닌,트랜잭션의 본질적인 개념과 ACID 원칙을 면접 기준으

gxnzi.tistory.com

 

반응형