-
[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과 충분한 논의 후 적용하는게 좋을것 같다.
반응형'아키텍처 및 기술 공부 > MySql' 카테고리의 다른 글
[Real Mysql 8.0] EXPLAIN ANALYZE 실행계획 (0) 2022.04.12 [Real Mysql 8.0] 유니크 인덱스 (0) 2022.04.12 [Real Mysql 8.0] 클러스터링 인덱스 (0) 2022.04.10 [Real Mysql 8.0] B-Tree 인덱스 (0) 2022.04.08 [Real Mysql 8.0] 인덱스 개요 (0) 2022.03.28