728x90
Transaction Isolation Level (트랜잭션 격리 수준)
트랜잭션 격리 수준은 동시에 여러 트랜잭션이 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있도록 허용할지 말지를 결정하는 것이다.
Isolation Level 종류
Isolation Level | 설명 | Dirty Read |
Non-Repeatable Read | Phantom Read |
고립성 (안정성) |
동시성 |
Read Uncommited | 커밋되지 않은 데이터도 읽을 수 있다 | O | O | O | 낮다 | 높다 |
Read Committed | 커밋된 정보만 읽는다 | X | O | O | 중간 | 중간 |
Repeatable Read | 하나의 트랜잭션에서는 하나의 스냅샷만 사용한다 | X | X | O | 중간 | 중간 |
Serializable | Read 시에 DML 작업이 동시에 진행될 수 없다 | X | X | X | 높다 | 낮다 |
Read Uncommitted
Read Uncommitted는 commit이나 rollback에 상관없이 트랜잭션의 데이터 변경 내용을 다른 트랜잭션이 읽는 것을 허용하는 트랜잭션 격리 수준이다.
💡 Dirty Read
Dirty Read는 트랜잭션 작업이 완료 되지 않았는데도 다른 트랜잭션에서 볼 수 있게 되는 현상을 말한다
Read Committed
Read Committed는 commit이 완료된 트랜잭션의 변경사항만 다른 트랜잭션에서 조회가 가능한 트랜잭션 격리 수준이다.
Dirty Read가 발생하지 않으며, Undo 영역의 백업된 레코드에서 값을 가져온다.
많은 RDB 서비스에서 가장 많이 사용하는 트랜잭션 격리수준이다.
하지만 Non-Reapeatable Read가 발생한다.
💡 Non-Reapeatable Read
Non-Reatable Read는 한 트랜잭션 안에서 똑같은 SELECT 쿼리(read)를 실행했을 때 항상 같은 결과를 가져오지 않는 현상이다.
Repeatable Read
Repeatable Read는 트랜잭션 범위 내에서 조회한 내용이 항상 동일함을 보장하는 트랜잭션 격리 수준이다.
Repeatable Read에서도 Phantom Read라는 데이터 부정합 문제가 발생 할 수 있다.
💡 Phantom Read
Phantom Read는 다른 트랜잭션에서 수행한 변경 작업에 의해 레코드가 보였다가 안 보였다가 하는 현상이다.
728x90
'자격증 > SQLD' 카테고리의 다른 글
[SQLD] 오라클(Oracle) 시간 표현 (0) | 2023.09.04 |
---|---|
[SQLD] DROP vs TRUNCATE vs DELETE (0) | 2023.09.04 |
[SQLD] SQL 최적화 기본 원리 - 조인 수행 원리 (0) | 2023.09.01 |
[SQLD] SQL 최적화 기본 원리 - 인덱스 기본 (0) | 2023.08.31 |
[SQLD] SQL 최적화 기본 원리 - 옵티마이저와 실행계획 (0) | 2023.08.31 |