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