트랜잭션 격리 수준 (Transaction Isolation Level)

Jace·2023년 1월 4일
0

Transaction Isolation Level

트랜잭션 격리 수준이란 트랜잭션들 끼리 얼마 고립되어 있는지 측정하는 수준이다. 특정 트랜잭션이 다른 트랜잭션에 의해 변경된 데이터를 볼 수 있도록 허용할지 말지를 결정하는 것이다.

Isolation Level의 필요성

데이터베이스는 ACID(원자성, 일관성, 고립성, 지속성) 특징과 같이 트랜잭션이 독립적인 수행을 하도록 한다.
따라서 Locking을 통해, 트랜잭션이 DB를 다루는 동안 다른 트랜잭션이 관여할 수 없도록 막는 것이 필요하다.
하지만 무조건 Locking으로 동시에 수행되는 수많은 트랜잭션을 거치게 처리하게 되면 데이터베이스 성능은 떨어지게 될 것이다.
성능을 높이기 위해 Locking의 범위를 줄이면 잘못된 값이 처리될 가능성이 있다.
효율적인 Locking 방법이 필요.

Read Uncommitted (level 0)

select 문장이 수행되는 동안 shared lock이 걸리지 않는 계층

Read Committed (레벨 1)

SELECT 문장이 수행되는 동안 해당 데이터에 Shared Lock이 걸리는 계층
Commit이 이루어진 트랜잭션만 조회 가능

Repeatable Read (레벨 2)

트랜잭션이 완료될 때까지 SELECT 문장이 사용하는 모든 데이터에 Shared Lock이 걸리는 계층
트랜잭션이 범위 내에서 조회한 데이터 내용이 항상 동일함을 보장함

Serializable (레벨 3)

트랜잭션이 완료될 때까지 SELECT 문장이 사용하는 모든 데이터에 Shared Lock이 걸리는 계층
완벽한 읽기 일관성 모드를 제공함

지금이야 말로 일할때다. 지금이야말로 싸울때다. 지금이야말로 나를 더 훌륭한 사람으로 만들때다 오늘 그것을 못하면 내일 그것을 할수있는가- 토마스 아켐피스>

profile
오늘한줄.

0개의 댓글