Hello

[정처기 필기] 트랜잭션, 트랜잭션의 특성, 병행제어, 로킹, 타임스탬프

by 볼빵빵오춘기

트랜잭션

  • 하나의 논리적 기능을 수행하기 위한 작업 단위이다.
  • DB에서 일어나는 연산의 집합이다.

트랜잭션의 특성

원자성(Atomicity)

  • 완전하게 수행이 완료되지 않으면 전혀 수행되지 않는다.
  • 연산은 Commit, Rollback을 이용하여 적용 또는 취소로 한꺼번에 완료되어야 한다.
  • 중간에 하나의 오류가 발생되더라도 취소가 되어야 한다.

일관성(Consistency)

  • 시스템 고정 요소는 트랜잭션 수행 전후가 같아야 한다.

격리성(Isolation, =고립성)

트랜잭션 실행 시 다른 트랜잭션의 간섭을 받지 않아야 한다.

영속성(Durability, =지속성)

트랜잭션의 완료 결과가 데이터베이스에 영구히 기억된다.

CRUD Matrix

  • DB에 영향을 주는 create, read, update, delete 연산으로 프로세스와 테이블 간에 매트릭스를 만들어서 트랙잭션을 분석하는 도구이다.
  • 업무 프로세스와 데이터 간의 상관관계 분석을 위한 것으로 업무 프로세스와 엔티티 타입을 행과 열로 구분하여 행과 열이 만나는 교차점에 이용에 대한 상태를 표시한다.

즉각 갱신법

  • 데이터를 갱신하면 트랜잭션이 완료되기 전에 실제 데이터베이스에 반영하는 방법이다.
  • 회복 작업을 위해서 갱신 내용을 별도 Log로 기록해야 한다.
  • Redo, Undo 모두 사용 가능하다.

트랜잭션의 연산

  • commit 연산 : 트랜잭션이 실행이 성공적으로 종료되었음을 선언한다.
  • rollback 연산 : 트랜잭션 실행이 실패하였음을 선언한다.
  • recovery 연산 : 트랜잭션을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업이다.

트랜잭션의 상태

  • 활동(Active) : 트랜잭션이 현재 실행 중인 상태를 말한다.
  • 부분 완료(Paritally Committed)
    트랜잭션이 마지막 처리를 실행한 뒤 데이터베이스에 그 처리 내용을 적용하기 직전의 상태이다.
  • 완료(Committed)
    부분 완료 상태에서 정상적인 트랜잭션 처리가 이루어져 데이터베이스에 트랜잭션처리를 적용 완료한 상태이다.
  • 실패(Failed)
    트랜잭션 실행 중 오류로 인해 정상적인 처리가 되지 않아 원자성과 일관성에 문제가 발생하여 더 이상 처리가 불가능한 상태이다.
  • 철회(Aborted)
    트랜잭션 처리 실패를 확인하고 처음 상태로 돌아가는 상태이다.

병행제어(Concurrency Control)

  • 동시에 수행되는 트랜잭션들을 일관성 있게 처리하기 위해 제어하는 것이다.
  • 목적
    • 데이터베이스의 공유를 최대화한다.
    • 데이터베이스의 일관성을 최대화한다.
    • 시스템 활용도를 최대화 한다.
    • 사용자에 대한 응답 시간을 최소화한다.
  • 병행 수행의 문제점 : 갱신 분실, 비완료 의존성, 모순성, 연쇄 복귀
  • 종류 : 로킹, 최적 병행 수행, 타임스탬프, 다중 버전 기법

타임스탬프

  • 트랜잭션이 DBMS로부터 유일한 타임스탬프(시간 허가인증 도장)을 부여받는다.
  • 동시성 제어를 위한 직렬화 기법으로 트랜잭션 간의 순서를 미리 정하는 방법이다.

로킹(Locking)

  • 로킹은 하나의 트랜잭션이 데이터를 액세스하는 동안 다른 트랜잭션이 그 데이터 항목을 액세스할 수 없도록 하는 병행 제어 기법이다.
  • 로킹 단위가 커지면 로크의 수가 적어 관리가 쉬워지지만 병행서 수준은 낮아진다.
  • 로킹 단위가 작으면 로크의 수가 많아 관리가 어려워지지만 병행성 수준은 높아진다.
  • 로킹의 대상이 되는 객체(파일, 테이블, 필드, 레코드)의 크기를 로킹 단위라고 한다.

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기