[데이터베이스] 트랜잭션 고립 수준
쓰기와 쓰기가 동시에 작업하는 것이 불가능
읽기와 읽기는 동시에 언제든 가능
문제 부분은 쓰기 트랜잭션과 읽기 트랜잭션이 동시에 일어날 때
하나의 트랜잭션은 발생 시점부터 데이터 일관성을 가져야 한다.
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