반응형
쓰기와 쓰기가 동시에 작업하는 것이 불가능
읽기와 읽기는 동시에 언제든 가능
문제 부분은 쓰기 트랜잭션과 읽기 트랜잭션이 동시에 일어날 때
하나의 트랜잭션은 발생 시점부터 데이터 일관성을 가져야 한다.
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
반응형
'CS > Database' 카테고리의 다른 글
[Mysql] rownum 활용 (0) | 2022.07.20 |
---|---|
[데이터베이스] 무결성 제약 조건 (0) | 2022.06.15 |
[데이터 베이스] 제 4 정규형, 제 5 정규형 (0) | 2022.06.13 |
[Database] MYSQL SQL 총정리 (0) | 2022.05.03 |
[MYSQL] 각종 도구 사용 명령어 (0) | 2022.05.03 |