동시성제어

Googling/cs

[DB] MVCC (feat. RDBMS 동시성 제어)

1. 풀어쓰기 약어를 풀면, 다중버전 병행수행제어 (MultiVersion Concurrency Control)가 된다. 쓰기트랜잭션이 읽기트랜잭션을 블로킹하지 않고, 읽기트랜잭션이 쓰기트랜잭션을 블로킹하지 않고, 각 트랜잭션마다 스냅샷 이미지를 보장해 주는 메커니즘을 말한다. 2. 왜 나왔을까? 데이터베이스에서 일관된 데이터를 얻는 것이 굉장히 중요하다. 만약 만원권 1,000장을 가진 사람이 있다고 가정해보자. (부럽다..) 만원권이 1,000장이 맞는지 세고 있을때, 다른 사람들이 몇 개의 만원권을 넣거나 빼거나 한다면 세고 있는 사람은 당연히 제대로 셀 수 없다. 가장 쉽게는 셀 동안은 다른 사람들이 넣거나 빼지 않게 보장하는 것이 일관된 데이터를 얻는 방법이다. 그래서 무조건 1,000장을 셀때..

Googling/cs

[DB] 트랜잭션 격리수준과 부정합 이슈 (feat. Dirty Read ~ Phantom Read)

1. 풀어쓰기 Read Uncommitted 한 읽기 트랜잭션이 시작했을때 다른 트랜잭션은 자유롭게 UPDATE 가능하다. 한 읽기 트랜잭션은 다른 트랜잭션에서 Update 중(un-commit)인 데이터를 조회할 수 있다. => 다른 트랜잭션이 중간에 롤백을 해도 읽기 트랜잭션은 롤백 전 데이터를 조회할 수 있는다. => 다른 트랜잭션의 Update(커밋)과 무관하게 일관된 데이터를 얻을 수 없는 확률이 높다. => Dirty Read Read Committed 한 읽기 트랜잭션이 시작했을때 다른 트랜잭션은 자유롭게 UPDATE 가능하다. 한 읽기 트랜잭션은 다른 트랜잭션에서 Update 완료(commit)된 데이터만 조회할 수 있다. => Dirty Read는 발생할 수 없다. 위 고립수준보다는 일관..

날개단
'동시성제어' 태그의 글 목록