본문 바로가기

CS/데이터베이스

트랜잭션의 격리수준

먼저 오류 3가지를 정리하자면,

① Dirty Read: 존재하지 않거나, 롤백되었거나, 저장 위치가 바뀌었을 수도 있는 데이터를 읽는 현상

② Non-Repeatable Read: 동일한 쿼리문이 2번 이상 수행되었을 때 결과값이 다른 현상

③ Phantom Read: Non-Repeatable Read의 한 종류로, 컬럼이 없어지거나 생기거나 등의 현상

 

1. Read Uncommitted

  • 커밋 전의 데이터도 조회할 수 있다.
  • Dirty Read 발생

2. Read Committed

  • 커밋이 완료된 데이터만 조회할 수 있다.
  • Dirty Read 방지
  • Phantom Read, Non-Repeatable Read 발생
  • 교착 상태가 발생할 수 있다.

3. Repeatable Read

  • 쓰는 동안 읽을 수 없고, 읽는 동안 쓸 수 없다.
  • 속도가 느려진다.
  • Phantom Read 발생

4. Serializable

  • 한 트랜잭션에서 사용하는 데이터는 다른 트랜잭션에서 사용이 불가능하다.
  • 즉, 순서대로 처리한다.
  • 속도가 매우 느려질 수 있다.

'CS > 데이터베이스' 카테고리의 다른 글

이상(Anomaly)  (0) 2021.09.29
SQL vs NoSQL  (0) 2021.09.29
Injection  (0) 2021.09.28
수직적 확장과 수평적 분할  (0) 2021.09.28
인덱스란?  (0) 2021.07.20