CS/정처기

트랜잭션

spring_sunshine 2024. 1. 22. 15:26

트랜잭션

  • 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위
  • 인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성이다.
  • 트랜잭션 특징으로 원자성, 일관성, 격리성(고립성), 영속성이 있다.
  • 원자성 (Atomicity)
    • 트랜잭션의 연산 전체가 모두 정상 실행 or 모두 취소가 되어야 하는 성질
    • CommitRollback에 의해 원자성을 보장받는다.
  • 일관성 (Consistency)
    • 시스템의 고정요소는 트랜잭션 수행 전과 수행 완료 후의 상태가 같아야 하는 성질
    • 병행 제어(concurrency control): 다수 사용자 환경에서 여러 트랜잭션을 수행할 때, 데이터베이스 일관성 유지를 위해 상호작용을 제어하는 기법
      • 미보장 시 문제점: 갱신 손실, 현황 파악 오류, 모순성, 연쇄 복귀
      • 종류: 로킹, 낙관적 검증, 타임 스탬프 순서, 다중 버전 동시성 제어
  • 격리성 (Isolation)
    • 동시 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 한다는 성질
    • 데이터베이스 고립화 수준(isolation level): Read Uncommittd < Read Committed < Repeatable Read < Serializable Read
  • 영속성 (Durability)
    • 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장되어야 하는 성질
    • 회복 기법 → 로그기반 회복기법, 체크포인트 회복기법, 그림자 페이징 회복기법

 

트랜잭션 상태 변화

  • 활동 (Active)
    • 초기 상태, 트랜잭션이 실행 중일때
  • 부분완료 (Partially Committed)
    • 마지막 명령문이 실행된 후 갖는 상태
    • 모든 연산의 처리는 끝났지만 트랜잭션이 수행한 최종 결과를 DB에 반영하지 않은 상태
  • 완료 (Committed)
    • 트랜잭션이 성공적으로 완료된 후 갖는 상태
  • 실패 (Failed)
    • 정상적인 실행이 더이상 진행될 수 없을 때 갖는 상태
  • 철회 (Aborted)
    • 트랜잭션이 취소되고 DB가 트랜잭션 시작 전의 상태로 환원된 상태
    • 트랜잭션 수행이 실패하여 Rollback을 실행한 상태