트랜잭션

From IT Wiki
Revision as of 22:11, 29 April 2019 by 정처기정리 (talk | contribs)
Transaction

정의

  • 데이터베이스 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
  • 데이터베이스 시스템에서 복구 및 병행 수행 시 처리되는 작업의 논리적 단위
  • 한꺼번에 수행되어야 할 일련의 연산

특성

줄여서 ACID라고 한다.
  • 원자성(Atomicity)
    • 트랜잭션 연산은 데이터베이스에 모두 반영되거나 전혀 반영되지 않아야 함
    • 트랜잭션의 연산 중 어느 하나가 수행되지 않으면 트랜잭션 전부가 취소되어야 함
  • 일관성(Consistency)
    • 동일한 트랜잭션은 일관성있는 결과를 도출
    • 시스템의 고정적인 요소는 트랜잭션 전후가 동일
  • 독립성(Isolation)
    • 실행중인 트랜잭션에 다른 트랜잭션이 개입할수 없음
    • 실행중인 트랜잭션을 다른 트랜잭션에서 참조할 수 없음
  • 영속성(Durability)
    • 완료된 트랜잭션은 영속적이어야 함

트랜잭션 병행제어

병행제어 기법

  • Two-Phase Locking Protocol
    • 확장상태 Lock 은 가능하고 Unlock은 불가능하다.
    • 축소상태 Unlock 은 가능하고 Lock 은 불가능하다.
    • DeadLock이 발생할 수 있다
  • Time Stamp
    • 데이터에 접근하는 시간을 미리 정하여서 정해진 시간(Time Stamp)의 순서대로 데이터에 접근 하여 수행하므로 Deadlock이 발생하지 않는다.

병행제어의 필요성

병행제어가 이루어지지 않을 경우 문제점
  • 갱신분실 (Lost update)
    • 두개 이상의 Transaction 수행하는 과정에서 연산결과의 일부가 없어지는 현상
  • 모순성 (Inconsistendy)
    • 두개 이상의 Transaction 수행해서 얻은 결과가 일관성이 없이 서로 다른 현상
  • 연쇄복귀 (Cascade Rolback)
    • 두개 이상의 Transaction이 수행되던중 한개의 Transaction이 취소될 때 나머지 다른 Transaction도 연쇄적으로 취소되는 현상
  • 비완료 의존성 (Uncommitied Dependency)
    • 두개 이상의 Transaction 수행시 먼저 수행된 Transaction이 실패한후 회복되기 이전에 다음 실행되는 Transaction이 실패한 값을 참조하게 되는 현상