데이터 아키텍처 & 처리기술 & DBMS/Oracle

Read Committed

anodos 2023. 12. 21. 16:27

"Read Committed"는 데이터베이스의 트랜잭션 격리 수준(Isolation Level) 중 하나로, 여러 트랜잭션이 동시에 데이터를 읽고 쓸 때 어떻게 동작할지를 정의합니다. Read Committed 격리 수준에서는 트랜잭션이 읽는 동안에 다른 트랜잭션이 동일한 데이터를 수정할 수 있지만, 해당 트랜잭션이 완료될 때까지는 수정 사항이 커밋되지 않습니다.

Read Committed 격리 수준의 주요 특징은 다음과 같습니다:

1. 읽기 일관성:

Read Committed에서는 트랜잭션이 읽을 때 해당 순간에 유효한 데이터를 읽습니다. 하지만 다른 트랜잭션이 동시에 같은 데이터를 수정하는 경우, 읽는 트랜잭션은 수정 중인 데이터가 아닌 이전 상태의 데이터를 읽게 됩니다. 이는 읽는 트랜잭션이 항상 커밋된 데이터를 읽는 것을 보장하지 않습니다.

2.행 레벨 Lock:

Read Committed에서는 행 레벨의 Locking이 사용됩니다. 쓰기 작업이 발생하면 해당 행에 대한 Lock이 걸리고, 읽는 트랜잭션은 해당 행이 Unlock 될 때까지 대기합니다.

3.Dirty Read 방지:

Dirty Read는 다른 트랜잭션이 아직 커밋되지 않은 데이터를 읽는 것을 의미합니다. Read Committed에서는 Dirty Read가 방지됩니다. 읽는 트랜잭션이 다른 트랜잭션이 수정 중인 데이터를 읽지 않게 됩니다.

4. Non-Repeatable Read 방지:

Non-Repeatable Read는 같은 쿼리를 두 번 실행할 때 결과가 달라지는 현상을 말합니다. Read Committed에서는 Non-Repeatable Read가 방지됩니다. 하지만 한 트랜잭션이 여러 번 동일한 쿼리를 실행하는 동안 다른 트랜잭션이 해당 데이터를 수정하고 커밋하는 경우, 읽는 트랜잭션은 다른 결과를 볼 수 있습니다.

5. Phantom Read 방지:

Phantom Read는 같은 범위의 데이터를 쿼리할 때 결과 집합이 변경되는 현상을 말합니다. Read Committed에서는 Phantom Read가 방지됩니다. 쓰기 작업이 발생하는 경우 해당 범위의 행을 읽는 트랜잭션은 해당 행이 변경될 때까지 대기합니다.

Read Committed 격리 수준은 데이터 일관성을 유지하면서도 동시성을 확보하는 데 기여합니다.하지만 다른 격리 수준에 비해 읽는 동안 다른 트랜잭션에 의해 수정된 데이터를 볼 수 있습니다. 

 

선택된 격리 수준은 응용 프로그램의 요구 사항과 데이터 일관성에 대한 필요에 따라 결정되어야 합니다.

반응형