DB isolation level
read uncommitted
commit되지 않은 데이터도 읽음. SELECT 문장을 수행하는 경우 해당 데이터에 Shared Lock이 걸리지 않는 Level이다
가장 낮은 수준의 transaction 수준. dirty read 발생 가능
read committed
commit된 것만 읽음. 이 Level에선 SELECT 문장이 수행되는 동안 해당 데이터에 Shared Lock이 걸린다.
Nonrepeatable read 발생가능. 즉, 동일한 transaction 내에서 반복되는 쿼리에 다른 값이 나올 수 있다. 첫번째 select와 두번째 select 사이에 다른 transaction으로 update가 일어났을 때 그러하다. 조회 건이 줄어들 수 있을 것 같다.
repeatable read
트랜잭션이 완료될 때까지 SELECT 문장이 사용하는 모든 데이터에 공유잠금을 유지하여 (읽기 Lock) , 트랜잭션이 종료될 때까지 다른 사용자가 해당 행을 수정하지 못하게 한다. 여러번 데이터를 읽어도 같은 값이 유지되도록 함. 그러나 같은 조건을 만족하는 새로운 row가 다른 트랜잭션에서 insert로 생성거나 update되어서 commit되었을 시 읽어지는 phantom read 발생. 조회건이 들어날 수 있다.
serializable
가장 높은 격리 수준으로 이 격리수준을 사용하는 메소드는 DB에 배타적 쓰기락을 얻음으로써 transaction이 종료될 때까지 조회,수정,입력 데이터로부터 다른 transaction의 처리를 막는다.
History
Last edited on 03/06/2011 08:53 by benelog
Comments (0)