Replies: 3 comments
-
데이터베이스에서 Isolation Level(격리 수준)은 트랜잭션이 동시에 실행될 때 데이터의 일관성과 격리를 보장하는 방법을 정의합니다.
1. Read Uncommitted
2. Read Committed
3. Repeatable Read
4. Serializable
격리 수준의 요약
참고: https://velog.io/@hgo641/트랜잭션-격리-수준#:~:text=즉%2C%20NON-REPEATABLE%20READ%20는,때%20발생하는%20문제이다. |
Beta Was this translation helpful? Give feedback.
-
트랜잭션의 격리 수준은 동시에 여러 트랜잭션이 실행될 때, 한 트랜잭션이 다른 트랜잭션의 연산에 영향을 받지 않도록 하는 정도를 말합니다. 낮은 격리 수준은 동시 처리 능력을 높이지만, 데이터의 일관성 문제를 발생시킬 수 있습니다. 반면, 높은 격리 수준은 데이터의 일관성을 보장하지만, 동시 처리 능력이 떨어질 수 있습니다. 즉, 데이터 정합성과 성능은 반비례합니다. 트랜잭션 isolation level은 개발자가 트랜잭션 격리 수준을 설정할 수 있는 기능을 제공하는 기능입니다. READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE
다음은 트랜잭션 격리 수준에 따라 발생할 수 있는 문제점입니다. Dirty Read 한 트랜잭션이 다른 트랜잭션이 변경 중인 데이터를 읽는 경우 발생합니다. 다른 트랜잭션이 아직 커밋되지 않은 (즉, 롤백할 가능성이 있는) 데이터를 읽어서, 그 데이터가 나중에 롤백될 경우 트랜잭션의 결과가 변경될 수 있습니다. 이는 데이터의 일관성을 깨뜨릴 수 있습니다. Phantom Read 한 트랜잭션이 동일한 쿼리를 두 번 실행했을 때, 두 번의 쿼리 사이에 다른 트랜잭션이 삽입, 갱신, 삭제 등의 작업을 수행하여 결과 집합이 달라지는 경우를 말합니다. 이로 인해 한 트랜잭션 내에서 일관성이 없는 결과를 가져올 수 있습니다. Non-Repeatable Read 같은 트랜잭션 안에서 동일한 쿼리를 실행했을 때, 다른 결과를 얻는 경우를 의미합니다. 예를 들어, 한 트랜잭션이 같은 데이터를 두 번 읽을 때, 첫 번째 읽기와 두 번째 읽기 사이에 다른 트랜잭션이 해당 데이터를 변경했을 경우 발생할 수 있습니다. |
Beta Was this translation helpful? Give feedback.
-
변경하거나 조회하고 있는 데이터에 대해서 다른 트랜잭션이 볼 수 있는지 여부 결정 직렬화 가능 |
Beta Was this translation helpful? Give feedback.
-
.
Beta Was this translation helpful? Give feedback.
All reactions