블로그는 나의 힘!
[ Programing ]/Database2021. 12. 2. 15:00

SET TRANSACTION ISOLATION LEVEL 
     { READ UNCOMMITTED 
     | READ COMMITTED 
     | REPEATABLE READ 
     | SNAPSHOT 
     | SERIALIZABLE 
     }

: 트랜잭션에 연결하여 실행되는 SQL문의 잠금 및 행 버전 관리 기능 제어.



SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
: Commit 되지 않은 데이터도 Select 가능.(Dirty Read. 확정되지 않는 데이터도 읽음)
  트랜잭션에서 Select 문의 모든 테이블에 NoLock을 설정하는 것과 같음.
  격리 수준 중에서 제한이 적다.


SET TRANSACTION ISOLATION LEVEL READ COMMITTED (Default)
: Commit된 데이터만 Select 가능.
  Commit 되지 않으면 Select 불가.
  Lock과 동일 개념.


SET TRANSACTION ISOLATION LEVEL REPEATABLE READ 
: Commit된 데이터만 Select 가능.
  Select 상태면 다른 세션에서 Select, Update 불가.
  Select 이외의 데이터 값에 대해선 Insert, Update 가능.
  Where 조건이 없어도 Select된 데이터 부분에서만 Update가 불가능.


SET TRANSACTION ISOLATION LEVEL SNAPSHOT 
: 로드한 데이터가 트랜잭션을 시작 시 존재한 데이터 버전과 일관성 유지 지정.
  디비가 복구 중인 경우 제외하면 스냅샷 데이터 읽는 동안 Lock 요청 않함.
  다른 트랜잭션의 데이터 쓰기를 차단 하지 않으며, 스냅샷 데이터 로드도 차단 하지 않음.


SET TRANSACTION ISOLATION LEVEL SERIALIZABLE 
: Select 한 범위에 대해 Insert 불가능.
  Where 조건이 없다면 모든 데이터를 Select 한 개념이므로 해당 테이블에는 Insert 불가능.




참조 :
docs.microsoft.com/ko-kr/sql/t-sql/statements/set-transaction-isolation-level-transact-sql?view=sql-server-ver15

blog.naver.com/airwindtree/222172959554

 

SET TRANSACTION ISOLATION LEVEL(Transact-SQL) - SQL Server

SET TRANSACTION ISOLATION LEVEL(Transact-SQL)

docs.microsoft.com

 

MSSQL : SET TRANSACTION ISOLATION LEVEL

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED https://...

blog.naver.com

 

Posted by Mister_Q