728x90
읽기 일관성은 쿼리가 시작된 시점을 기준으로 데이터를 일관성 있게 읽어들이는 것을 말한다.
일관성을 높이려면 고립화 수준을 높여야 한다.
고립화란?
- 간단히 4가지 고립화를 설명하겠다 -
레벨 0
트랜잭션에서 처리 중인 아직 커밋되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용
(Dirty Read, Non-Repeatable Read, Phantom Read 현상 발생)
레벨 1
더티리드 방지 : 트랜잭션이 커밋되어 확정된 데이터만 읽는 것을 허용
대부분의 DBMS가 기본모드로 채택하고 있음
Non-Repeatable Read, Phantom Read 현상은 여전히 발생
오라클은 락을 사용하지 않고 Undo데이터를 제공하는 방식으로 구현
SQL Server 등은 읽기 공유 락을 이용해서 구현
레벨 2
선행 트랜잭션이 읽은 데이터는 트랜잭션이 종료 될 때까지 후행 트랜잭션이 갱신하거나 삭제하는 것을 불허함으로써 같은 데이터를 두번 쿼리했을 때 일관성있는 결과를 리턴
Phantom Read 현상은 여전히 발생
오라클은 for update절을 이용해 구현가능
레벨 3
선행 트랜잭션이 읽은 데이터를 후행 트랜잭션이 갱신하거나 삭제하지 못할 뿐만 아니라 중간에 새로운 레코드를 삽입하는 것도 막아줌
완벽한 읽기 일관성 모드를 제공
728x90
'프로그래밍 > MS_SQL' 카테고리의 다른 글
MS SQL 외래키 지정 (0) | 2012.09.10 |
---|---|
MSSQL 테이블 소유자 변경 (0) | 2012.09.05 |
MSSQL identity 값 초기화 (0) | 2012.04.04 |
Foreign key 설정 (0) | 2012.03.14 |
인터넷서점 모델링 (0) | 2012.03.08 |