트랜잭션
트랜잭션이란?
- 트랜잭션은 작업의 단위이다.
- 보통 Database Management System에 관여한다.
- ACID 속성으로 묘사된다.
- A: Atomic
- C: Consistent
- I: Isolated
- D: Durable
Atomic(원자성)
- 트랜잭션에 의한 모든 작업이 완료가 되어야 한다. 작업이 완료된 트랜잭션은
commit
된다. - 작업중 하나라도 완료가 되지 않으면 기존 상태로
roll-back
한다. - 이 속성을 통해 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는다는 것을 보장한다.
Consistent(일관성)
- 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태를 유지하는 것을 의미한다.
- 무결성 제약에 위반하는 트랜잭션이 있다면 그 트랜잭션은 중단된다.
- EX) 계좌 잔고가 0보다 작을 수 없다는 무결성 제약이 있다면, 잔고보다 더 큰 금액을 출금하려는 트랜잭션은 중단된다.
Isolation(독립성)
- 트랜잭션을 수행할 때, 다른 트랜잭션은 해당 작업에 간섭할 수 없다.
- EX) 입금, 출금 작업이 진행되는 계좌에는 다른 연산 작업이 간섭할 수 없다.
- 실행단계에 있는 트랜잭션은 다른 어떤 데이터베이스에서도 이를 볼 수 없음을 의미한다.
Durable(지속성)
- 성공적으로 실행된 트랜잭션(
commit
orroll-back
)은 영원히 반영되어야 함을 의미한다. - 전형적으로 트랜잭션은 로그로 남고, 이를 통해 시스템 장애 발생 전 상태로 돌아갈 수 있다.