본문 바로가기

공부 자료/DataBase

[데이터베이스] 트랜잭션, ACID

[트랜잭션]

트랜잭션(transaction)

: 여러 개의 작업을 하나로 묶는 실행 유닛

: 하나의 특정 작업으로 시작을 해 묶여 있는 모든 작업을 다 완료해야 정상적으로 종료하며 단 하나라도 실패했을 경우 모든 작업을 실패한 것으로 판단

 

[ACID]

ACID : 데이터베이스 내에서 일어나는 하나의 트랜잭션의 안전성을 보장하기 위한 성질

 

- Atomicity(원자성) : 하나의 트랜젝션에 속해있는 모든 작업이 전부 성공하거나 전부 실패해 결과 예측이 가능해야 함

- Consistency(일관성) : 데이터베이스의 상태가 일관되어야 함 (이전과 이후 상태는 이전과 같이 유효해야 함)

- Isolation(격리성, 고립성) : 모든 트랜잭션은 다른 트랜잭션으로부터 독립되어야 함

- Durability(지속성) : 하나의 트랜잭션이 성공적으로 수행되었다면 런타임 오류나 시스템 오류가 발생하더라도 기록은 영구적이어야 함

 

Example

1. Atomicity(원자성)

: A계좌에서 출금, B계좌에 입금을 진행하려는데 출금은 이루어졌지만 입금이 이루어지지 않았다면, 출금된 돈은 사라지는 돈이 되게 되므로 은행의 기능을 할 수 없음. 따라서, B계좌 입금 진행이 실패한다면 A에서 출금하는 작업을 포함해 모든 작업이 실패로 돌아가야 함

2. Consistency(일관성)

: 모든 고객은 반드시 이름을 가지고 있어야 한다 라는 제약이 존재할 경우, 이름이 없는 새로운 고객을 추가하거나 기존 고객의 이름을 삭제할 경우 유효한 상태는 다를 수 있지만 제약을 위반하게 되므로 예시 이후 데이터베이스는 일관되지 않는 상태를 가지게 됨

3. Isolation(격리성, 고립성)

: 계좌에 만원이 존재. 해당 계좌에서 B로 6천원, C로 6천원을 동시에 이체할 경우 B 이체 후 C를 이체하는 결과와 동일해야 하는데 동시에 이체될 경우 동일한 결과가 발생할 수 없음

4. Durability(지속성)

: 계좌 이체를 성공적으로 실행한 뒤 은행 DB에 오류가 발생해 종료되더라도 계좌이체 내역은 기록으로 남아있어야 함