2023-java-study / book-study

북 스터디 기록 레포지토리
0 stars 0 forks source link

"NON-REPEATABLE READ" 부정합 #161

Open ssstopeun opened 1 year ago

ssstopeun commented 1 year ago

p. 180에 나오는 READ COMMITTED 격리 수준에서 발생하는 "NON-REPEATABLE READ" 부정합 이 뭘 의미하는 건지 이해가 잘 안됩니다.

NuhGnod commented 1 year ago

158 이슈와 관련된 내용인것같긴합니다

p.179에서 그림 5.5 바로 위에 NON-REPEATABLE READ(REPEATABLE READ가 불가능하다) 라고 되어있는 것을 보고 이해했습니다. 그래서 read commited수준에서는 같은 트랜잭션 내애서 다른 트랜잭션의 커밋 전후로 select쿼리의 결과가 달라질 수 있으니 부정합문제가 발생한다 라고 이해했습니다.

gmelon commented 1 year ago

격리수준이 READ COMMITTED 일 때는 하나의 트랜잭션에서 데이터를 조회할 때 커밋된 데이터를 조회하는 것만 보장하고, 동일 쿼리를 여러번 날렸을 때 같은 결과가 나오는 것은 보장하지 않는다고 합니다.

따라서 책에서 말하는 NON-REPEATABLE READ 부정합은 READ COMMITTED일 때 동일 트랜잭션에서 동일 쿼리를 두번 이상 날렸을 때 기존 결과가 다른 결과가 나오는 문제를 말하는 것 같습니다.