Transaction
데이터에 접근하고 데이터를 업데이트 시키는 데이터베이스 프로그램의 단위이다.
다음과 같은 이슈를 다뤄야 한다.
- 하드웨어, 소프트웨어, 트랜잭션의 실패
- 여러 트랜잭션의 병행 실행
ACID
트랜잭션이 가져야 하는 4가지 특징이다.
1. Atomicity(원자성)
2. Consistency(일관성)
3. Isolation(독립성)
4. Durability(지속성)
Atomicity
원자성은 트랜잭션이 DB에 모두 반영되거나, 전혀 반영되지 않거나를 뜻한다. -> All or Nothing
Consistency
일관성은 트랜잭션이 실행된 후에도 데이터베이스가 일관성을 유지하는 것이다.
- 명시적 일관성 : 기본키, 외래키
- 암묵적 일관성 : ex) A에서 B로 이체하는 경우, A+B의 합은 트랜잭션의 실행 전 후가 같아야 한다.
Isolation
여러 트랜잭션이 동시에 실행되더라도, 각 트랜잭션은 다른 병행되는 트랜잭션이 실행중인 것을 몰라야 한다.
즉, 다른 병행 실행중인 트랜잭션에 의해 결과가 영향을 받아서는 안된다.
-> 트랜잭션은 독립적이다.
고립성은 트랜잭션이 직렬적으로 수행된다면 항상 보장받을 수 있다. -> 성능이 좋지 않음.
Durability
트랜잭션이 성공적으로 완료한 후에, 변경된 사항은 데이터베이스에 영구적으로 반영되어야 한다.
Transaction State
- Active
현재 트랜잭션이 실행 중인 상태
- Partially commited
마지막 연산까지 실행되었지만 아직 커밋 되지 않은 상태
- Aborted
브랜잭션이 비정상 종료되어 Rollback 이 수행된 상태
- Commited
성공적으로 완료한 상태
Concurrent Execution
시스템에서 여러개의 트랜잭션이 동시에 실행될 때의 장점은 다음과 같다.
1. throughput(단위시간당 몇 개의 transaction 이 수행되었는가) 이 증가한다.
2. 평균 response time 이 줄어든다.
데이터베이스의 consistency 를 보장하면서 동시성을 지원하는 것
-> isolation 에 달려있다.
'DB' 카테고리의 다른 글
Deadlock (0) | 2022.04.20 |
---|---|
Multiple Granularity Locking (0) | 2022.04.20 |
Lock-based Protocols (0) | 2022.04.20 |
Recoverability (0) | 2022.04.19 |
Serializability (0) | 2022.04.19 |
댓글