반응형

 

쓰기와 쓰기가 동시에 작업하는 것이 불가능

읽기와 읽기는 동시에 언제든 가능

 

문제 부분은 쓰기 트랜잭션읽기 트랜잭션이 동시에 일어날 때

 

하나의 트랜잭션은 발생 시점부터 데이터 일관성을 가져야 한다.

 

 

 

Read uncommited - 오손 읽기(Dirty read) 

commit되지않은 데이터를 읽는 문제

 

 

Read commited - 반복 불가능 읽기(Non repeatable read)

update -> commit된 데이터를 읽어, 데이터 일관성이 깨진다.

 

 

Repeatable read - 유령 데이터 읽기(Phantom read)

트랜잭션 시작 전 commit 된 데이터만 undo영역을 이용하여 읽는다. 일관성이 깨지지 않는다.

insert -> commit 된 데이터를 읽어, 데이터를 추가로 읽어 데이터 일관성이 깨진다.

 

 

Serializable - 모든 문제 해결

트랜잭션이 다른 트랜잭션으로 부터 완전히 독립

 

 

 

 

MySQL은 Repeatable read를 사용하므로 유령 데이터 읽기가 발생할 수 있지만,

inno db 넥스트 키락으로 row에 락을걸어 insert 트랜잭션을 막기때문에, 유령 데이터 읽기가 발생하지 않는다.

 


 

https://idea-sketch.tistory.com/46

 

[MySQL]MySQL 벼락치기(5) - 갭락(Gap Lock)과 넥스트 키 락(Next-Key Lock)

이번 포스팅은 사내에서 MySQL 관련 내용 발표를 위해 Real MySQL(http://wikibook.co.kr/real-mysql/) 서적을 기반으로 학습하고 이해한 내용을 정리하는 포스팅이다. 포스팅에서는 주로 InnoDB 스토리지 엔진

idea-sketch.tistory.com

 

반응형

+ Recent posts