트랜잭션의 격리 수준(isolation)이란 , 동시에 여러개의 트랜잭션이 처리되는 상황에서,
트랜잭션이 다른 쪽 트랜잭션에서 처리중인 데이터를 읽어 올 수 있는 정도의 수준을 정해 놓은 것이다.
보통 4가지로 분류 한다.
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE
------------------------------------------------------------------------------------------------------------------------
READ UNCOMMITTED : 다른 트랜잭션의 처리가 COMMIT 또는 ROLLBACK 전에도 데이터를 읽어올 수 있다.
다만 그로인해 읽어온 데이터의 정합성이 떨어질 수 있다. DIRTY READ 현상
READ COMMITTED : 가장 기본적으로 사용되고 있는 격리 수준으로 다른 트랜잭션의 처리가 완료된 후에만
데이터를 읽어올 수있다. DIRTY READ 현상은 없지만 대기 시간이 길어질 수 있다.
REPEATABLE READ : 다른 트랜잭션이 UPDATE, DELTE 처리중이면, 데이터를 읽어올 수없지만, SELECT , INSERT
처리중에는 읽어올 수 있다. 다만 PHANTOM READ ( INSERT된 데이터가 나중에 나타남 )
현상이 있을 수 있다.
SERIALIZABLE : 가장 엄격한 격리수준이다. 다른 트랜잭션이 UPDATE, DELTE , INSERT 처리중이면,
데이터를 읽어올 수없지만, SELECT 처리중에는 읽어올 수 있다.
가장 엄격하므로 동시처리 성능이 상대적으로 떨어진다.
기타
SNAPSHOP , READ COMMITTED SNAPSHOP 가 있는데 둘다 다른 트랜잭션 처리에 의해서 바뀐 정보는 조회되지 않는다. 다른 격리 수준과 다르게 데이터베이스 단위로 속성을에서 설정해 줘야한다.
물론 쿼리 창에서 명령어 실행가능 하다.
<사용방법>
예) SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
또는
select * from [table] with(nolock) 시 with(nolock)은 격리 수준을 READ UNCOMMITTED 한다.
'MSSQL' 카테고리의 다른 글
[MSSQL] 커서(CUSOR)를 이용한 반복문 예 (0) | 2022.02.24 |
---|---|
[MSSQL] 자동 증가값 (IDENTITY 입력 제한) 해제 (0) | 2022.02.22 |
[MSSQL] WITH(NOLOCK) 사용 (0) | 2022.02.18 |
[MSSQL]PARTITION by 사용 (0) | 2022.02.18 |
[MSSQL] 숫자 ->문자 / 문자 ->숫자 변환 ( Convert / Cast ) (0) | 2022.02.09 |