DB

Transaction

아뵹젼 2022. 4. 19.

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

댓글