• [Real Mysql 8.0] Mysql의 격리 수준
    아키텍처 공부/MySql 2022. 3. 25. 21:13
    반응형

     트랜잭션의 격리 수준(isolation level)이란 여러 트랜잭션이 동시에 처리될 때 특정 트랜잭션이 다른 트랙잭션에서 변경되거나 조회하는 데이터를 볼 수 있게 허용할지 말지를 결정하는 것이다.

     

     격리 수준은 크게 네 가지로 나뉘고 각 격리 수준은 세 가지 부정합의 문제점이 있다.

      Dirty read Non-repeatable Read Phantom Read
    Read Uncommitted 발생 발생 발생
    Read Commited 없음 발생 발생
    Repeatable read 없음 없음 없음 (InnoDB)
    Serializable 없음 없음 없음

    MySql은 기본적으로 Repeatable Read를 사용한다.

     

     PEPEATABLE READ는 동일 트랜잭션 내에서는 동일한 결과를 보여줄 수 있게 보장한다.

     

     모든 InnoDB의 트랜잭션은 고유한 트랜잭션 번호를 가지며, 언두 영역에 백업된 모든 레코드에는 변경을 발생시킨 트랜잭션의 번호가 포함돼 있다. 아래 그림은 트랜잭션이 끝나지 않은 사용자 B가 변경된 정보를 조회하는것을 도식화 한것이다.

    결론

    MySql은 기본적으로 Repeatable Read를 사용한다. 

     

    MySQL의 트랜잭션 격리수준​이 있고, 어플리케이션 레벨(Spring)의 트랜잭션 격리수준이 있는데, DBA과 충분한 논의 후 적용하는게 좋을것 같다.

    반응형

    댓글

Designed by Tistory.