You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit a90b32d
Browse filesBrowse the repository at this point in the historyBrowse files
* 한 클라이언트가 다른 클라이언트가 썻지만 아직 커밋되지 않은 데이터를 덮어쓴다. 거의 모든 트랜잭션 구현은 더티 쓰기를 방지한다.
28
+
29
+
* 읽기 스큐 (비반복 읽기)
30
+
* 클라이언트는 다른 시점에 데이터베이스의 다른 부분을 본다. 이 문제를 막기 위한 해결책으로 트랜잭션이 어느 시점의 일관된 스냅숏으로부터 읽는 스냅숏 격리를 가장 흔히 사용한다. (REPEATABLE READ) 스냅숏 격리는 보통 다중 버전 동시성 제어(MVCC) 를 써서 구현 한다.
31
+
32
+
* 갱신 손실
33
+
* 두 클라이언트가 동시에 read-modify-write 주기를 실행한다. 서로 다른 트랜잭션이 수정내용을 후행하는 버젼이 덮으쓰는 경우. 스냅숏 격리 구현 중 어떤 것은 이런 이상 현상을 자동으로 막아주지만 그렇지 않은 것은 수동 잠금(SELECT FOR UPDATE)이 필요하다.
34
+
35
+
* 쓰기 스큐
36
+
* 트랜잭션이 무엇인가를 읽고 읽은 값을 기반으로 어떤 결정을 하고 그 결정을 데이터베이스에 쓴다. 그러나 쓰기를 실행하는 시점에는 결의 전제가 더 이상 참이 아니다. 직렬성 격리만 이런 이상 현상을 막을 수 있다.
37
+
* 보통 INSERT 할때 발생하는데, Table 의 UNIQUE INDEX 을 해결하거나 id 기반의 직렬성 격리, 혹의 범위기반의 서술 잠금(predicate lock)이 필요함.
0 commit comments