언두 데이터의 읽기 일관성

2025. 1. 11. 19:08DBMS/ORACLE Admin

반응형
 

언두 데이터의 읽기 일관성 제공

1. 읽기 일관성(READ CONSISTENCY) 개념

DBMS는 다중 사용자 환경에서 동시에 여러 사용자가 데이터를 읽고 쓸 수 있도록 지원해야 한다. 하지만, 특정 사용자가 데이터를 변경하는 동안 다른 사용자가 해당 데이터를 조회할 때 변경 중인 데이터를 읽지 않고 변경 이전의 상태를 보도록 보장해야 한다. 이를 읽기 일관성(READ CONSISTENCY)이라고 하며, 데이터의 무결성을 유지하는 중요한 개념이다.

예를 들어:

  • 사용자 A가 테이블의 특정 데이터를 변경 중이고 아직 커밋(commit)하지 않았다면,
  • 사용자 B가 같은 데이터를 조회할 때 사용자 A의 변경 사항이 적용되지 않은 원래의 데이터를 봐야 한다.

이때, 언두 데이터(UNDO DATA)가 사용된다.


2. 언두 데이터의 역할

Oracle DB는 데이터가 변경되기 전의 상태를 언두 영역(UNDO TABLESPACE)에 저장한다. 트랜잭션이 변경 작업을 수행할 때, 변경되기 이전의 데이터를 언두에 기록함으로써 트랜잭션이 롤백될 때 원래 상태로 복구할 수 있고, 다른 사용자에게 읽기 일관성을 제공할 수 있다.

작동 방식:

  • 트랜잭션 시작 시: 변경 작업을 수행할 때, 변경 이전의 데이터가 언두 테이블스페이스에 저장된다.
  • 다른 사용자가 데이터를 조회할 때:
    • 만약 해당 데이터가 변경 중이라면, DBMS는 언두 테이블스페이스에 있는 변경 이전의 데이터를 읽어 사용자에게 반환한다.
    • 이를 통해 사용자는 변경 이전의 일관된 데이터 상태를 확인할 수 있다.

3. 예시

아래는 Oracle DB에서 언두 데이터가 읽기 일관성을 제공하는 구체적인 예시이다:

  1. 사용자 A가 테이블의 특정 행을 수정하는 동안 아직 커밋하지 않았다.
    UPDATE employees SET salary = 5000 WHERE employee_id = 101;
    
  2. 사용자 B가 같은 테이블을 조회한다.
    SELECT * FROM employees WHERE employee_id = 101;
    
    • 사용자 B가 조회할 때, DBMS는 커밋되지 않은 변경 사항을 무시하고 언두 영역에 저장된 원래 데이터를 반환한다.
    • 사용자 B는 변경 작업이 일어나기 전의 데이터를 보게 된다.

4. 언두 데이터가 필요한 이유

만약 언두 데이터가 없다면:

  • 사용자 B는 변경 중인 데이터를 보거나,
  • 데이터의 일부만 변경된 불완전한 상태의 데이터를 볼 수 있다.
    이는 데이터 무결성을 해치고, 애플리케이션의 동작에도 문제를 일으킬 수 있다.

언두 데이터를 통해 Oracle DB는 커밋되지 않은 트랜잭션의 영향을 차단하고, 다른 사용자가 일관된 데이터 상태를 보도록 보장한다.


5. 읽기 일관성과 커밋의 관계

  • 트랜잭션 커밋 전: 다른 사용자는 언두 데이터를 통해 변경 이전 상태를 읽습니다.
  • 트랜잭션 커밋 후: 변경 사항이 확정되므로, 다른 사용자는 변경된 최신 데이터를 읽게 된다.

 

반응형

'DBMS > ORACLE Admin' 카테고리의 다른 글

Redo Log Files와 Archived Redo Log Files  (0) 2025.01.11
DBMS가 복잡해지는 이유 | 다양한 기능  (0) 2025.01.11
오라클 사용법  (0) 2025.01.11
오라클 아키텍쳐 01  (0) 2024.11.02
오라클 관리 04 ORACLE Net Service  (0) 2024.10.27