Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

The Office Lover

@Transaction - isolation 격리 수준에 따른 세가지 현상 본문

Backend

@Transaction - isolation 격리 수준에 따른 세가지 현상

Michael Gary Scott 2023. 7. 20. 17:02

@Transaction - isolation 격리 수준에 따른 세가지 현상

1. Dirty Read

 한 트랜잭션(T1)이 아직 커밋되지 않은 다른 트랜잭션(T2)에 의해 변경된 데이터를 읽는 현상을 말한다. 만약 T2가 롤백되면, T1이 읽은 데이터는 더 이상 유효하지 않게 됩니다. 이러한 현상을 방지하기 위해, 일반적으로 트랜잭션은 자신이 커밋되지 않은 다른 트랜잭션의 변경사항을 볼 수 없도록 격리됩니다.

 

2. Non-Repeatable Read

 한 트랜잭션(T1) 내에서 동일한 쿼리를 두 번 실행했을 때, 그 사이에 다른 트랜잭션(T2)이 값을 변경하거나 삭제함으로써 두 쿼리의 결과가 서로 다르게 나오는 현상을 말합니다. 이를 방지하기 위해, 일반적으로 트랜잭션은 동일한 데이터에 대해 동시에 두 개 이상의 트랜잭션이 변경을 수행하지 못하도록 잠금을 설정하게 됩니다.

 

3. Phantom Read

 한 트랜잭션(T1) 내에서 특정 범위의 행을 두 번 이상 읽을 때, 그 사이에 다른 트랜잭션(T2)이 그 범위에 새로운 행을 추가하거나 삭제함으로써 두 쿼리의 결과가 달라지는 현상을 말합니다. Non-Repeatable Read와 비슷하나, 이 경우는 범위 자체가 변경되는 문제입니다. 이를 방지하기 위해 일반적으로 트랜잭션 내에서 범위 잠금을 사용하여 특정 범위의 데이터를 보호하게 됩니다.  

 

'Backend' 카테고리의 다른 글

제어의 역전 - Inversion of Control  (0) 2023.08.11
Java IO와 NIO  (0) 2023.07.21
Java blocking과 non-blocking  (0) 2023.07.21
Java Spring Framework - @Transactional  (0) 2023.07.20
메세지 큐(Message Queue)  (0) 2023.03.27