<aside> 💡
트랜잭션이란?
ex) 은행에서 계좌이체 할 때
두 개의 작업이 모두 성공해야 계좌 이체가 정상적으로 완료 -> 중간에 오류가 발생해서 A계좌에서는 돈이 빠져나갔는데 B계좌에 입금이 안되면? 문제 발생 -> 그래서 데이터베이스 트랜잭션은 ACID 원칙을 보장해야 한다.
원자성(Atomicity) : 트랜잭션에 포함된 작업은 전부 수행되거나 아니면 전부 수행되지 않아야함. "All or Nothing" ex) 돈을 보내는 과정에서 중간에 오류가 나면 출금도 취소됨
일관성(Consistency) : 트랜잭션을 수행하기 전이나 수행한 후나 데이터베이스는 항상 일관된 상태를 유지해야함. ex) 은행 계좌의 총합이 변하지 않아야함
격리성(Isolation) : 수행 중인 트랜잭션에 다른 트랜잭션이 끼어들어 변경 중인 데이터 값을 훼손하는 일이 없어야함. ex) 두 사람이 같은 계좌에서 동시에 출금 요청하면 순서대로 처리됨
지속성(Durability) : 수행을 성공적으로 완료한 트랜잭션은 변경한 데이터를 영구히 저장해야함 ex) 송금이 완료된 후 전산 장애가 발생해도 입금 기록이 남아있음