ACID란?
●ACID란?
- 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)의 약자이며, 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 의미
●원자성
- 트랜잭션 내부 연산들이 부분적으로 실행되고 중단되지 않는 것을 보장
- 트랜잭션은 전체 성공과 전체 실패 중 한 가지만 수행
●일관성
- 트랜잭션이 성공적으로 완료되면 일관성 있는 데이터베이스 상태로 유지되는 것을 보장
- 제약조건과 같이 데이터베이스에 정의된 규칙을 트랜잭션이 위반하는 경우에는 해당 트랜잭션은 취소되어야 함
●격리성
- 동시에 실행되는 여러 트랜잭션이 서로 독립적임을 보장하며, 가장 엄격할 경우에는 트랜잭션을 순차적으로 실행하며, 트랜잭션을 수행할 때 다른 트랜잭션이 해당 작업 사이에 끼어들지 못하도록 보장(트랜잭션 밖에서 어떠한 연산도 중간 단계의 데이터를 볼 수 없음을 의미)
- 예시
1.계좌 이체 작업에서 A 계좌의 잔고와 B 계좌의 잔고 총합이 10,000원인 상태로 시작했을 때, 특정 순간에는 총합이 10,000원이 아닌 경우도 있을 것입니다. 하지만, 다른 트랜잭션은 항상 잔고의 총합인 10,000원을 볼 수 있도록 보장
●지속성
- 성공적으로 수행된 트랜잭션은 영원히 반영되어야 하며, 시스템에 장애가 발생해도 성공적으로 수행된 트랜잭션의 결과는 항상 데이터베이스에 반영되어 있어야 함
- 형적으로 트랜잭션은 로그로 남고, 로그가 저장되어야 트랜잭션이 성공되었다고 간주
- 추후 장애가 발생한다면 이 로그를 활용해 데이터베이스를 회복