- 트랜잭션
- 하나의 작업을 수행하기 위해서 필요한 데이터베이스 연산을 묶어 놓은 것
- 데이터베이스 연산이라고하는것은 SELECT, UPDATE, INSERT, DELETE와 같은 행동을 한 것
- 예. 송금은 1. 보내는 사람의 계좌에서 돈을 빼고, 2. 받는 사람의 계좌에 돈을 추가하는 두 가지 행위가 묶인 한 작업이다.
- 트랜잭션 4가지 성질(ACID)
- Atomicity(원자성) : transaction의 작업이 부분적으로 성공하는 일이 없도록 보장하는 성질이다.
- 송금하는 사람의 계좌에서 돈은 빠져나갔는데 받는 사람의 계좌에 돈이 들어오지 않는 일은 없어야 한다.
- Consistency(일관성) : transaction이 끝날 때 DB의 여러 제약 조건에 맞는 상태를 보장하는 성질이다.
- 송금하는 사람의 계좌 잔고가 0보다 작아지면 안 된다.
- Isolation(독립성) : transaction이 진행되는 중간 상태의 데이터를 다른 transaction이 볼 수 없도록 보장하는 성질이다.
- 송금하는 사람의 계좌에서 돈은 빠져나갔는데 받는 사람의 계좌에 돈이 아직 들어가지 않은 DB 상황을 다른 transaction이 읽으면 안 된다.
- Durability(지속성) : transaction이 성공했을 경우 해당 결과가 영구적으로 적용됨을 보장하는 성질이다.
- 한 번 송금이 성공하면 은행 시스템에 장애가 발생하더라도 송금이 성공한 상태로 복구할 수 있어야 한다.
- Atomicity(원자성) : transaction의 작업이 부분적으로 성공하는 일이 없도록 보장하는 성질이다.
- 트랜잭션의 Commit, Rollback 연산
- Commit
- 하나의 트랜잭션이 성공적으로 끝나서 데이터베이스가 일관성있는 상태에 있음 을 의미한다.
- Rollback
- 하나의 트랜잭션 처리가 비정상적으로 종료되었을 때의 상태를 뜻한다.
- Rollback 이 이뤄진다면 트랜잭션을 다시 실행하거나 부분적으로 변경된 결과를 취소할 수 있다.
- Commit
- 트랜잭션의 상태
- Active
- 트랜잭션이 현재 실행 중인 상태
- Failed
- 트랜잭션이 실행되다 오류가 발생해서 중단된 상태
- Aborted
- 트랜잭션이 비정상 종료되어 Rollback 이 수행된 상태
- Partially Committed
- 트랜잭션의 연산이 마지막까지 실행되고 Commit이 되기 직전 상태
- Committed
- 트랜잭션이 성공적으로 종료되어 Commit 연산을 실행한 후의 상태
'Computer Science' 카테고리의 다른 글
[DB] 인덱스를 사용하는 이유 (0) | 2022.03.10 |
---|---|
[운영체제] 가상 메모리, Virtual Memory (0) | 2022.03.06 |
[운영체제] Thread-safe (0) | 2022.03.06 |
[운영체제] 캐시 메모리, Cache Memory (0) | 2022.03.05 |
[운영체제] 단편화 (0) | 2022.03.05 |