Isolation(격리) Level에 대한 정리IT/DB2019. 10. 24. 01:46
Table of Contents
[Read Uncommitted]
트랜잭션에서 처리(SELECT/INSERT/UPDATE/DELETE)중에 있는 아직 커밋되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용한다
[Read Committed]
트랜잭션들이 Commit된 데이터만 읽게 함으로써 Dirty Read를 막는다. Commit된 데이터만 읽더라도 읽는 시점에 따라 결과가 다를 수 있어서 Non-Repeatable Read와 Phantom Read 현상이 발생할 수 있다. 한 트랜잭션 내에서 쿼리를 두 번 수행할 경우, 두 쿼리 사이에서 다른 트랜잭션에 의해 해당 데이터가 UPDATE/DELETE되거나 새로운 데이터가 INSERT되는 일이 발생할 수 있다.
[Repeatable Read]
트랜잭션 내에서 쿼리를 두 번 이상 수행할 경우, 첫 번째 쿼리 관련 데이터가 UPDATE/DELETE되어 그 다음번째 쿼리에서부터 변경된 값을 읽게 되는 현상을 막는다. 그렇지만 Phantom Read 현상이 발생할 수 있다. 한 트랜잭션 내에서 쿼리를 두 번 수행할 경우, 두 쿼리 사이에서 다른 트랜잭션에 의해 새로운 데이터가 INSERT되어 두 쿼리의 결과가 서로 달라질 수 있다.
[Serializable Read]
트랜잭션 내에서 쿼리를 두 번 이상 수행할 경우, 두 쿼리 사이에서 첫 번째 쿼리 관련 데이터가 UPDATE/DELETE 되거나 새로운 데이터가 INSERT 되는 현상을 막는다.
'IT > DB' 카테고리의 다른 글
SELECT ... FOR UPDATE 문 관련 Dead Lock 문제 (0) | 2019.10.31 |
---|---|
Shared/Exclusive Lock 개념 (0) | 2019.10.24 |
JOIN ON 절과 WHERE 절에 IS NULL 조건 사용 시의 차이점 (0) | 2018.09.20 |
MSSQL 특정 월의 N번째 특정 요일에 해당하는 날짜 찾기 (0) | 2018.05.15 |
ACID (트랜잭션의 특성 관련..) (0) | 2018.02.14 |
@DEAN :: Dean Story
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!