트랜잭션

트랜잭션의 개념

  • 데이터베이스를 조작하기 위한 하나의 논리적 단위를 이루는 일련의 연산의 집합
  • 데이터베이스를 사용하여 처리하는 작업을 하나의 묶음으로 인식하여 묶음 단위로 실행되도록 정의한 개념

특징

다수의 연산으로 구성된 트랜잭션이 사용자에게 단일작업처럼 다뤄지도록 ACID 특징을 준수함

ACID

  • 원자성(atomicity): 하나에 트랜잭션에 포함된 모든 연산은 완전히 수행되거나 전혀 수행되지 않음
  • 일관성(consistency): 특정 트랜잭션이 수행되기 전과 후에 데이터베이스가 일관된 상태를 유지
  • 고립성(isolation): 특정 트랜잭션이 데이터베이스를 갱신하는 동안 다른 트랜잭션에 의해 방해받지 않음
  • 지속성(durability): 완료된 트랜잭션의 결과는 어떠한 시스템의 장애에도 데이터베이스에 반영되어야 함

트랜잭션의 연산

  • Read(X): 데이터베이스에서 데이터 X를 읽고, 트랜잭션이 실행되는 메모리의 변수 X에 값을 저장하는 연산
  • Write(X): 트랜잭션이 실행되는 메모리에 있는 변수 X의 값을 데이터베이스에 저장하는 연산

계좌 A에서 B로 1000원을 이체하는 트랜잭션

Read(A)
A := A - 1000
Write(A)
Read(B)
B := B + 1000
Write(B)

트랜잭션 실행의 연산

  • Commit: 트랜잭션 연산에 의해 갱신된 데이터 항목의 값을 데이터베이스에 반영시키고 지속성을 확보하는 연산
  • Rollback: 트랜잭션이 중단되기 이전까지 수행한 연산에 의해 갱신된 모든 데이터 항목의 값을 무효화하여 일관성을 확보하는 연산

트랜잭션의 5가지 상태 변화

  1. 동작: 트랜잭션이 시작을 준비 또는 실행 중인 상태
  2. 부분 커밋: 마지막 연산을 실행한 직후의 상태
  3. 커밋: 모든 실행이 성공적으로 완료된 후의 상태
  4. 실패: 실행이 정상적으로 진행될 수 없는 상태

트랜잭션의 동시성

동시성 고려

  1. DBMS는 다수의 사용자가 데이터베이스를 공용으로 사용하기 위한 목적으로 도입
  2. 트랜잭션 동시 실행의 이점
    • 트랜잭션 처리율과 자원 이용률 향상
    • 트랜잭션 대기시간 감소
  3. 다중 사용자 환경에서 트랜잭션의 동시 실행(병렬 스케줄)로 데이터 갱신 시, 일관성 훼손 문제가 발생

직렬 가능 스케줄

  • 트랜잭션간 연산 순서를 교환하여 트랜잭션을 직렬 스케줄과 동등하게 변환이 가능한 스케줄
  • 사용된 Read와 Write 연산 교환 시 상황에 따라 실행 결과에 일관성이 훼손되는 현상이 발생
  • 연산 순서의 교환은 다른 데이터를 읽거나 쓸 때, 쓰기를 지나가지 않는 선에서 읽기끼리 교환 가능(충돌 동등)

충돌 직렬성

순서 교환이 가능한 연산을 교환하여 직렬 스케줄의 연산과 동등하게 변환이 가능한 스케줄

트랜잭션의 회복

원자성을 보장하기 위해 트랜잭션 실패 시 실행된 모든 연산을 실행 이전 상태로 복원하는 기법

  • 커밋한 트랜잭션 or 스케줄은 롤백(회복)이 불가능
  • 연쇄적 롤백의 경우 데이터베이스에 오버헤드를 일으킬 수 있다

비연쇄적 스케줄

  • 연쇄적 롤백으로 발생할 수 있는 대량의 회복 연산을 방지하기 위해 연쇄적이지 않은 스케줄로 구성된 스케줄
  • Ti가 기록한 데이터를 읽을 때 Ti의 커밋이 Tj의 읽기 연산보다 먼저 나타나는 스케줄
Last Updated: