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. 트랜잭션의 직렬성 보장 방안(동시성 제어 기법)
보장 방안 | 설명 | |
---|---|---|
Locking | Shared | – 트랜잭션 수행 시 해당 트랜잭션의데이터 항목에 대해 읽기만 가능 |
Exclusive | – 트랜잭션 수행 시 해당 트랜잭션의데이터 항목 읽기/쓰기 모두 불가능 | |
2 Phase Locking | – 모든 트랜잭션이 lock과 unlock 연산을 확장/수축 단계로 구분 수행 | |
Timestamp Ordering | – 데이터베이스로 들어오는 트랜잭션 순서대로 Counter 할당 및 제어 | |
Validation (낙관적 검증) | – 트랜잭션 수행 시 어떤 검사도 하지 않고 트랜잭션 종료 후 일괄 검사 | |
MVCC | – 트랜잭션의 타임스탬프와 접근 데이터의 타임스탬프를 비교하여 직렬 가능성이 보장되는 버전 선택 |