특징 | 설명 | 주 기법 |
---|---|---|
원자성 Atomicity |
트랜잭션 을 구성하는 연산 전체가 모두 정상 실행 or 모두 취소되어야 하는 성질 트랜잭션 연산 전체가 성공 또는 실패되어야 하는 성질 |
Commit/Rollback 회복성 보장 |
일관성 Consistency |
시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전/수행 후의 상태가 같아야 하는 성질 |
|
고립성 (격리성) Isolation |
동시 실행되는 트랜잭션이 서로 영향을 줘선 안된다는 성질 ommitted<br/> Repeatable Read<br/> Serializable` |
|
영속성 Durability |
성공이 완료된 트랜잭션 결과는 DB 내에 영구적으로 저장되어야 한다는 성질 |
원자성
주요 기법)Commit
과 Rollback
이 존재한다.원자성 Atomicity
이 보장된다.연산 | 설명 |
---|---|
Commit |
하나의 트랜잭션이 성공적으로 끝나고, DB가 일관성 있는 상태이거나 하나의 트랜잭션이 끝났을 때 사용하는 연산 (성공, 실패 상관 X => 일단 끝난 거) |
Rollback |
하나의 트랜잭션이 비정상적으로 종료되어 원자성 이 깨질 경우 처음부터 다시 시작하거나, 부분적으로 연산을 취소하는 연산 |
일관성
주요 기법)병행 제어 목적 |
---|
DB 공유를 최대화한다. |
시스템의 활용도를 최대화한다. |
DB의 일관성을 유지한다. |
사용자에 대한 응답 시간을 최소화한다. |
병행 제어를 보장하지 않는 경우에 발생할 수 있는 문제점은 다음과 같다.
갱신 손실 Lost Update
현황 파악오류 Dirty Read
모순성 Inconsistency
연쇄 복귀 Cascading Rollback
Locking
, 낙관적 검증
, 타임 스탬프 순서
, 다중 버전 동시성
기법이 존재한다.Locking
Locking의 특징
1. DB, File, Record 등은 로킹 단위가 될 수 있다.
2. 한꺼번에 로킹할 수 있는 객체의 크기 == 로킹 단위
3. 로킹 단위가 작아지면 DB 공유도가 증가하고, 로킹 오버헤드가 증가한다.
4. 로킹 단위가 커지면 병행성 수준이 낮아진다.
낙관적 검증 Optimistic Validation
타임 스탬프 순서 Time Stamp Ordering
타임 스탬프
부여하고 다중 버전 동시성 MVCC