
출처: https://henriquesd.medium.com/acid-properties-43e146b21e0d
트랜잭션
트랜잭션
- 단일한 논리적인 작업단위
- 논리적인 이유로 여러 SQL문들을 단일 작업으로 묶어서 나눠질 수 없게 만든 것이 트랜잭션
- 트랜잭션의 SQL문들 중 일부만 성공해서 DB에 반영되는 일은 일어나지 않는다.

트랜잭션 연산
Commit
- 트랜잭션이 시작되고 지금까지 작업한 내용물을 DB에 영구적으로 저장하는 트랜잭션 종료 명령어
Rollback
- 트랜잭션이 시작되고 지금까지 작업한 내용을 모두 취소하고 트랜잭션 시작 이전 상태로 되돌리는 트랜잭션 종료 명령어
ACID
트랜잭션을 적용할때 데이터의 무결성을 보장하기 위해 지켜야 하는 원칙
Atomicity(원자성)
- Transaction은 논리적으로 쪼갤 수 없는 작업 단위이기 때문에 내부의 SQL문들이 모두 성공해야 성공하게 한다.
- 중간에 SQL문이 실패하면 Rollback 한다.
Consistency(일관성)
- Transaction은 DB 상태를 Consistent 상태에서 또 다른 Consistent 상태로 바꿔야 한다.
- Constraints 등을 통해 DB에 정의된 Rule을 위반했다면 Rollback 해야한다.
- Transaction이 DB에 정의된 Rule을 위반했는지 DBMS가 Commit 전에 확인하고 알려준다.
- 그 외 Transaction 관점에서 Consistent 하게 동작하는지는 개발자가 챙겨야 한다.
Isolation(고립성)
- 여러 Transaction들이 동시에 실행될때에도 혼자 실행된것처럼 동작하게 만들어야 한다.
Durability(지속성)
- Commit 된 Transaction은 DB에 영구적으로 보관되어야 한다.
- DB 시스템에 문제(Power Fail or DB Crash)가 생겨도 Commit 된 트랜잭션은 DB에 남아있어야 한다.
'영구적으로 저장한다' 는 일반적으로 비휘발성 메모리에 저장함을 의미한다.
- 기본적으로 Transaction의 Durability는 DBMS가 보장한다.