트랜잭션은 쪼갤수 없는 최소 업무 처리 단위를 말한다. 데이터베이스에서의 트랜젝션이란 하나의 작업단위를 나타낸다.
트랜잭션의 중요성은 데이터 동시 접근의 문제에서 발견할 수 있다. 위 사진을 예를 들어 A지점과 B지점에서 동시에 계좌 잔액 500원을 확인하고 100원을 인출했다고 하자. 두 지점 모두 남은 잔액을 400원으로 저장해서 최종 잔액은 300원이 아닌 400원으로 저장됐다. 이는 한 작업이 다른 작업에 영향을 받은 결과이다.
위와 같은 일을 방지하기 위해 데이터베이스는 작업의 단위를 트랜잭션으로 정의한다.
트랜잭션은 다수의 연산으로 구성된 트랜잭션이 사용자에게 단일작업처럼 다뤄지도록 ACID 특징을 준수한다.
ex) 출금 과정에서 하나라도 문제가 된다면 송금이 이루어지지 않는다.
만약 원자성이 지켜지지 않는다면 돈은 빠져나가고 통장 잔고는 그대로인 상황이 발생할 수 있다.
ex) A계좌에서 B계좌로 이체를 할 때, 두 계좌 잔액의 합은 이체 전 후와 같아야 한다.
위의 사진처럼 500원에서 200원을 출금했는데 400원이 되어버린 상황은 일관성이 무너진 상황이다.
ex) 하나의 트랜잭션이 A계좌에서 작업중이라면 다른 트랙잭션은 이를 방해하지 못하고 대기해야 한다.
[참고 사이트]