CS/OS, DB
데이터베이스 트랜잭션과 ACID
pikabite
2022. 4. 4. 00:54
트랜잭션의 의미
- 트랜잭션의 영어 단어는 transaction [거래, 매매, 처리, 과정] (https://en.dict.naver.com/#/entry/enko/6057b38e242c4b05969fcb2d3a8bfc04) 임
- 데이터베이스에서의 transaction도 또한 유사한 의미로 하나의 처리의 단위로서 하나의 논리적 기능을 처리하는 단위임
- 병행처리 또는 회복 recovery 작업시에 ACID의 네가지 원칙을 유지해야함
- commit 되거나, rollback 되는 것
트랜잭션에서 ACID의 의미
Atomicity (원자성)
- 트랜잭션의 연산은 단일 단위로써 DB에 모두 한꺼번에 반영 되던지 안되던지 해야함
- 단일 트랜잭션 내 내부 작업 중 하나의 오류라도 있으면 해당 트랜잭션이 전부 취소되어야 함
Consistency (일관성)
- 트랜잭션의 수행이 성공적으로 완료 되면 언제나 일관성 있는 DB 형태로 변환함
- 시스템의 고정요소 (데이터타입 등)은 트랜잭션의 수행 전후가 같아야함
Isolation (독립성)
- 둘 이상의 트랜잭션이 실행 되는 중 하나의 트랜잭션에 다른 하나의 트랜잭션이 관여 할 수 없음, 독립적 수행을 보장
- 수헹 완료 전까지 다른 트랜잭션에 의해 참조되거나 할 수도 없음
Durability (영속성)
- 성공적으로 수행 된 트랜잭션의 내용은 영구히 반영됨
Commit과 Rollback
- Commit은 트랜잭션으로 변경 된 데이터를 영구히 저장하는 것을 의미함
- commit 이전에는 메모리 buffer에만 반영이 되므로 데이터는 commit 이전 상태로 언제든 복구가 가능함 (commit 이후 영원히 기존 데이터는 잃어버리게됨)
- 어플리케이션의 정상/비정상 종료시 데이터가 DB와 접속이 단절되면 자동 Rollback
- Rollback은 트랜잭션에 의한 변경 전으로 되돌아감
- 정상/비정상적으로 종료되어 DB와 접속이 해제되면 Rollback되며 또한 DB의 일관성을 해칠 때도 rollback 됨
- 트랜잭션의 일부 오류가 있을 경우 rollback됨
- rollback시 해당 트랜잭션을 재시작하거나 폐기함