데이터베이스(DB)/MariaDB

[MySQL] isolation level 종류 및 특징

개발계발게발 2022. 1. 7. 16:30
반응형

※ isolation level (Transaction 격리 수준)

- 동시에 여러 트랜잭션이 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있도록 허용할지 말지를 결정 하는 레벨

- 격리 수준 :  Read Uncommitted, Read Committed, Repeatable Read, Serializable

- 격리 수준이 높아질수록 동시성도 떨어지는 것이 일반적

 

  1. Read Uncommitted (Dirty Read)
  2. Read Committed
※ Repeatable Read : 하나의 트랜잭션 내에서 동일 select 쿼리를 실행했을 때는 항상 같은 결과를 가져와야 한다는 정합성 정의 (select를 한 후 재차 하는 사이에 데이터 변경이 있어서 동일 select 했을 때 다른 결과가 나오는 것을 뜻함)
이것이 문제될 수 있는 상황은 하나의 트랜잭션에서 동일 데이터를 여러 번 읽고 변경하는 작업이 금전적인 처리와 연결된다면 문제가 발생할 수 있음.(ex-돈을 인출하는 과정에서 돈이 있어서 인출하려는 사이에 금액에 변경이 생겼(다른 곳에서 돈이 인출됨)는데 인출이 가능한 경우 문제가 발생)
 

 3. Repeatable Read

※ MVCC(Multi Version Concurrency Control)

: 잠금을 사용하지 않는 일관된 읽기를 제공하는 것이 목적

 

이해를 하기 위해 다시 정리

- Read Uncommitted : 변경되었거나 안된 데이터의 값을 읽음  

- Read Committed(그 이상의 경리 수준 - Repeatable_Read, Serializable) : 변경 전 Undo에 있는 값을 읽음 

 

-> 이러한 과정을 MVCC라고 표현

 

 4. Serializable

 

 5. Repeatable Read 격리 수준과 Read Committed 격리 수준의 성능 비교

 

 

 

MySQL(Repeatable Read) 과 Oracle(Read Committed) 은 격리수준이 다르다.

 

반응형