1. Read Uncommitted
    1. 특징
      • Nolock 힌트와 동일
      • Select 구문의 이슈이다.
      • Dirty Read - 다른 Transaction에서 변경이 되었지만 아직 Commit 명령이 아직 수행되지 않은 변경된 데이터(Dirty)를 읽어올 수 있음( 수정불가).
    2. 업무 시나리오
      • Select구문에 대한 후속 작업에서 변경을 가하지 않는 로직에 적용
      • Transaction이 빈번한 테이블에서 빠른 조회가 요구될 때
      • 동시성에 대한 요구가 없는 작업에서

 

  1. Read Committed
    1. 특징
      • 힌트가 없는 일반 문장
      • 디폴트 격리수준
      • Select 이슈.
      • 다른 Transaction에서 변경 중인 데이터는 읽어 올 수가 없음 
        (
        다른 Transaciton에서 Commit 또는 Rollback 명령이 떨어지지 않는 한 실행된 Select구문은 대기 상태로 들어가게 됨).
    2. 업무 시나리오
      • 대부분의 일반 업무 시나리오.

                                                             

  1. Repeatable Read
    1. 특징
      • UPDLOCK힌트와 동일
      • 자신의 Transaction Select이슈, 다른 Transaction Update 이슈
      • 한 트랜잭션내에서 수행하는 select문은 항상 동일한 값을 반환함공유잠금유지)
      • , 자신의 Transaction하에서 Select된 로우에 대해 다른 Transaction이 읽어갈 수는 있지만 수정할 수 없음.
      • 다른 Transaction이 같은 테이블의 다른 로우에 대한 변경, 추가, 삭제는 가능
      • select * , 조건절 Select이나 테이블 스캔, 인덱스 스캔인 경우는 해당 테이블에 변경, 삭제가 불가능 하나 추가는 가능
    2. 업무 시나리오
      • 같은 로우에 대한 동시 업데이트가 문제시 되는 업무 시나리오
      • 같은 로우에 대한 Transaction이 빈번한 경우 Select구문에 대한 중요 정책이 필요할 때
      • 예약, 발권 등의 같은 로우에 대한 동시 접근 시나리오.
    3. * Read Uncommitted와의 차이점은?

 

  1. Serializable
    1. 특징
      • HOLDLOCK힌트와 동일하다.
      • Repeatable Read 특징을 모두 포함.
      • 조건 조회의 경우는 Repeatable Read와 동일 
        (
        해당 로우에 대해 다른 Transaction이 변경,삭제를 할 수 없음)
      • Select *, 조건조회이나 테이블 스캔, 인덱스 스캔의 경우 다른 Transaction에서 해당 테이블에 대해 변경, 삭제, 추가를 할 수 없음.
    2. 업무 시나리오
      • Transaction에서 발생된 Select구문의 데이터에 대한 완벽한 정확성을 반영하고자 할 때
      • 대량의 데이터를 특정 로직으로 변경을 가하는 Import, Export, Bulk Copy 등의 배치 작업에서 데이터의 동시성이 중요시 되는 경우에 사용
      • 해당 테이블에 동시 Transaction 수가 적을 때
      • Transaction이 빈번한 대규모 시스템에서는 성능에 치명적인 영향을 미치므로 주의해서 사용

 

출처 : http://dalbong2.net/trackback/214

'SQL' 카테고리의 다른 글

SQL 단일모드  (0) 2012.03.12
SQL Server 보안(권한) 관련 정리된 글  (0) 2011.11.24
SQL Server Stress Test  (0) 2011.10.31
분산쿼리에 대해...  (0) 2010.10.28
확장 저장 프로시저 내리기  (0) 2010.04.28

+ Recent posts