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

+ Recent posts