트랜잭션

  • 데이터베이스 시스템에서 하나의 논리적인 기능을 정상적으로 수행하기 위한 작업의 기본 단위
  • 특징
    • 원자성 - Atomicity

      • 분해가 불가능한 작업의 최소 단위
      • 연산 전체가 성공 또는 실패
    • 일관성 - Consistency

      • 트랜잭션이 실행 성공 후 향상 일관된 데이터베이스 상태 보전
      • 무결성 제약조건
      • 동시성제어
    • 격리성 - Isolation

      • 트랜잭션 실행 중 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근 불가
    • 영속성

        - Durability
      
      • 성공이 완료된 트랜잭션의 결과를 영속적으로 데이터베이스에 저장
  • 상태 변화
    • 활성 → 부분완료 → 완료 → 실패 → 철회
  • TCL - Transaction Control Language - 트랜잭션 제어언어
    • 트랜잭션의 결과를 허용하거나 취소하는 목적으로 사용되는 언어
    • Commit - 확정
    • Rollback - 취소
    • Check point - 저장 시기 설정 - Save Point
  • 병행 제어 기법 ]] - Concurranct Control
    • 다수의 사용자 호나경에서 여러 트랜잰셕을 수행할 때 데이터 베이스 일관성 유지를 위해 상호작용을 제어하는 기법
    • 병행 제어 미보장시 문제점
      • 갱신손실 - Lost Update
      • 형황파악오류 - Dirty Read
      • 모순성 ]] - Inconsistency
      • 연쇄복귀

          - Casacade Rollback
        
    • Locking

        - 로킹
      
      • 같은 자원을 엑세스하는 다중 트랜잭션 환경에서 DB의 일관성과 무결성을 유지하기 위해 트랜잭션이 순차적 진행을 보장하는 직렬화 기법
      • 특징
        • 데이터베이스, 파일, 레코드 등을 로킹 단위가 될 수 있음
        • 로킹단위가 작아지면 로킹 오버헤드 증가
        • 한꺼번에 로킹할 수 있는 객체의 크기를 로킹 단위라고함
    • Validation

        - 낙관적 검증
      
      • 트랜잭션이 어떤한 검증도 수행하지 않고 일단 트랜잭션을 수행하고 트랜잭션 종료시 검증을 수행하여 데이터베이스에 반영하는 기법
    • 타임스탬프 순서

        - Timestamp Ordery
      
      • 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 하기 전에 타임스탬프를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법
    • 다중 기반 동시성제어

        - MVCC
        - Multiversion Concurrency Contact
      
      • 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임스탬프를 비교하여 직렬 가능성이 보장되는 적절한 버전을 선택하여 접근하도록하는 기법