티스토리 뷰
728x90
반응형
DB에서도 나오고 InMemoryDB에서도 나오는 용어중에 Trasaction Isolation level 에 대해 정리를 해보려고 한다. 왜? 많이 나오는데 계속 정리는 하는데...계속 기억이 안 나기 때문이다...그리고 관련된 그림을 찾지 못해서.. 내가 이해한 대로 그림을 그려서 이해를 좀 더 쉽게 해보려고 한다.(잘못 된 것이 있다면, 알려주세요)
일단 가장 기본적으로 현상 3가지를 알아야 한다.
* 3가지 현상
- Dirty
- Commit하지 않은 데이터에 대한 접근성 허용
- NonRepeatable
- 한 트랜잭션안에서 같은 쿼리를 했는 데 결과가 상이하게 나오는 비일관성 발생
(같은 쿼리가 실행하는 중간에 다른 트랜잭션이 데이터 값을 수정 및 삭제) - Phantom Read
- 일정 범위의 레코드를 두번 이상 읽을 때, 첫번째 쿼리에서 없던 레코드가 두번째 쿼리에서 나타나는 현상
- 트랜잭션 도중 새로운 레코드가 삽입되는 것을 허용.
* 트랜잭션 고립화 수준
- 레벨0 (READ_UNCOMMITTED)
- 트랜잭션에서 처리중인(커밋되지않은) 데이터를 다른 트랜잭션에서 읽는 것을 허용.
- 레벨1(READ_COMMITTED)
- 트랜잭션이 커밋되어 확정된 데이터만 읽는 것을 허용
- 대부분의 DB가 이 레벨을 지원
- Non-Repeatable Read, Phantom Read 현상 발생
- 레벨2(REPEATABLE_READ)
- 선행 트랜잭션이 읽은 데이터는 트랜잭션이 종료될 때까지 후행 트랜잭션이 갱신하거나 삭제하는 것을 불허함으로써 같은 데이터를 두번 쿼리했을때 일관성 있는 결과를 리턴.
- Phantom Read 현상 발생
- 레벨3(SERIALIZABLE_READ)
- 선행 트랜잭션이 읽은 데이터를 후행 트랜잭션이 갱신하거나 삭제하지 못할 뿐만 아니라 중간에 새로운 레코드를 삽입하는 것도 막아줌
- 완벽한 읽기 일관성 모드를 제공
이것을 그림으로 만들어 그려보면 다음과 같다.
그리고 레벨에 따라 Concurrnecy와 Consistency가 변경이 될 것이다.
다시 말해서, 일관성을 높이기 위해서는 Lock을 많이 잡아야 되고 따라서 동시성이 저하된다는 말이다.
Reference)
http://wiki.gurubee.net/pages/viewpage.action?pageId=3900389
http://blog.inspien.co.kr/54
transaction_isolation_capture.pptx
반응형
'이제 관심밖의 IT 기술 > Infinispan(DataGrid)' 카테고리의 다른 글
[정리] eviction & passivation & expiration (0) | 2013.06.05 |
---|---|
Consistent Hashing (0) | 2013.06.05 |
댓글
250x250
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Red Hat
- 온타리오
- docker
- Canada
- git proGit
- 토론토
- 옥빌
- 캐나다
- BC주
- redhat
- Certificate
- 밀튼
- 부동산분석
- 벌링턴
- 토론토정착서비스
- Jay
- 우드워킹
- 정착서비스
- TORONTO
- 미시사가
- 부모님초청이민
- 캐나다부동산
- cert
- basement
- 인터넷
- RHCE
- certification
- RHEL
- ansible
- BTBS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함