Search

Isolation Level(고립 수준)

태그
데이터베이스 관리 시스템(DBMS)에서 트랜잭션 간의 상호작용을 제어하고 데이터 일관성과 동시성을 관리하는 데 사용되는 개념
여러 트랜잭션을 동시에 실행 할 때 각 트랜잭션이 다른 트랜잭션의 작업을 얼마나 볼 수 있는지 및 얼마나 격리되어야 하는지를 결정

고립 수준

1.
READ UNCOMMITTED (읽기 미완료) 한 트랜잭션에서 수정 중인 데이터를 다른 트랜잭션에서 읽을 수 있습니다. 다른 트랜잭션이 커밋되지 않은 데이터를 읽을 수 있으므로 데이터 일관성과 무결성이 보장되지 않습니다. 고립성이 낮고 동시성이 높습니다.
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SQL
복사
2.
READ COMMITTED (읽기 완료) 다른 트랜잭션이 커밋한 데이터만 읽을 수 있습니다. 아직 커밋되지 않은 데이터는 읽을 수 없으므로 데이터의 일관성은 높아집니다. 그러나 두 번의 같은 읽기 작업 사이에 다른 트랜잭션이 데이터를 수정할 수 있으므로 고립성은 여전히 낮습니다.
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SQL
복사
3.
REPEATABLE READ (반복 가능한 읽기) 동일한 쿼리를 실행한 동안에 다른 트랜잭션이 해당 범위의 데이터를 수정할 수 없습니다. 따라서 동일한 쿼리를 반복 실행할 때 동일한 결과를 보장합니다. 고립성이 높아집니다.
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
SQL
복사
4.
SERIALIZABLE (직렬화 가능) 모든 트랜잭션을 순차적으로 실행하는 것처럼 고립성을 유지합니다. 동시성은 가장 낮고, 데이터 일관성은 가장 높은 수준입니다. 모든 트랜잭션 간에 격리를 완전히 보장합니다.
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SQL
복사
고립 수준은 선택할 때는 데이터베이스 시스템의 요구 사항과 성능을 고려해야 합니다.
더 높은 고립 수준은 데이터 일관성을 높이지만 동시성을 낮출 수 있으며, 반대로 낮은 고립 수준은 동시성을 높이지만 데이터 일관성을 희생할 수 있습니다.
선택한 고립 수준에 따라 트랜잭션 처리 방식과 데이터 일관성이 결정됩니다.
트랜잭션은 서로 상호작용이 안 된다고 했는데 트랜잭션 간의 상호작용은 어떤게 있어
COMMIT이란?
일관성?
동시성?
무결성?
고립성?
트랜잭션의 수준은 어떻게 결정되는가?
시스템의 요구사항과 성능을 고려해야 하는데 예시를 들어서 설명해줘