트랜잭션 (Transaction)

I. 데이터베이스 처리 단위, 트랜잭션

데이터베이스 상태를 변화시키는 하나의 논리적 작업 단위를 구성하는 일련의 연산 집합

트랜잭션 완료 시 Commit, 미완료 시 Rollback을 통해 데이터베이스의 일관성 유지

II. 트랜잭션의 특성, ACID

트랜잭션의 4가지 조건 ACID

특성설명보장방안
원자성

(Atomicity)

– 모든작업 완벽수행 또는 전부 취소

– 트랜잭션의 ‘all or nothing’의 특성

회복

기법

일관성

(Consistency)

– 트랜잭션 연산성공 후 일관성 상태

– 작업 수행 전과 완료 후 상태 동일

동시성

제어

독립성

(Isolation)

– 트랜잭션 동시 수행 시 다른 트랜잭션 수행에 영향 없이 독립적으로 수행동시성

제어

영속성

(Durability)

– 완료된 트랜잭션 결과 영구 반영

– S/W, H/W 장애 시 절대적으로 보존

회복

기법

  • 회복 기법: 로그 기반, 체크포인트, 그림자페이징 기법
  • 동시성 제어 기법: Locking, 2PL, Timestamp, Validation 기법

ACID 추가 설명

III. 트랜잭션의 직렬성

트랜잭션의 직렬성 개념

  • 트랜잭션들을 병행 처리한 결과가 순차적(직렬적)으로 수행한 결과와 같아지는 성질

직렬성 방해의 유형

유형설명사례
충돌

직렬성

– 두 명령어 I, J가 동시 접근한 항목Q 존재

– 이들 중 Q 쓰기 수행 시 트랜잭션 Ti, Tj 충돌

Ti=read(Q), Tj=read(Q)미충돌

Ti=read(Q), Tj=write(Q) 충돌

Ti=write(Q), Tj=read(Q) 충돌

Ti=write(Q), Tj=write(Q) 충돌

직렬성

– 맹목 쓰기(blind write) 시 직렬성이 훼손

– T4, T6는 read(Q)없이 바로 write(Q)만 실행

  • 직렬성이 결여되면 갱신 손실, 현황 오류, 모순성, 연쇄 복귀가 발생하므로 직렬성 보장 위해 동시성 제어 기법 활용

직렬성 방해 상황 해결 방안

유형방안설명
충돌

직렬성

– 하나의 튜플에 대해 READ와 WRITE 사이에 다른 트랜잭션의 WRITE 제거

직렬성

– 하나의 트랜잭션에 대해 READ와 WRITE 사이의 WRITE를 순차적으로 수행

IV. 트랜잭션의 직렬성 보장 방안(동시성 제어 기법)

보장 방안설명
LockingShared– 트랜잭션 수행 시 해당 트랜잭션의데이터 항목에 대해 읽기만 가능
Exclusive– 트랜잭션 수행 시 해당 트랜잭션의데이터 항목 읽기/쓰기 모두 불가능
2 Phase Locking– 모든 트랜잭션이 lock과 unlock 연산을 확장/수축 단계로 구분 수행
Timestamp Ordering– 데이터베이스로 들어오는 트랜잭션 순서대로 Counter 할당 및 제어
Validation

(낙관적 검증)

– 트랜잭션 수행 시 어떤 검사도 하지 않고 트랜잭션 종료 후 일괄 검사
MVCC– 트랜잭션의 타임스탬프와 접근 데이터의 타임스탬프를 비교하여 직렬 가능성이 보장되는 버전 선택

 

 

콘텐츠 사용 시 출처 표기 부탁 드리고, 궁금한 점이나 의견은 댓글 남겨주세요^^