앤디🐹는 은행🏧 업무를 보러 갔다
수만은행에서 드림은행으로 돈을 이체할 예정이다.
1. 수만은행에서 출금하여 드림은행으로 송금을 했다.
2. 송금 중 알 수 없는 오류가 발생해 수만은행에서는 돈이 빠져 나갔지만, 드림 은행 계좌에는 입금되지 않았다.
3. 이러한 상황을 막기 위해 거래 도중 뭔가 오류가 발생했을 때는 이 거래를 처음부터 없었던 거래로 완전히 되돌려야 한다.
이러한 거래의 안정성을 확보하는 방법이 트랜젝션이다.
DB에선 테이블에서 데이터를 읽어 온 후 다른 테이블에 데이터를 입력하거나, 갱신, 삭제하는데 처리 도중 오류가 발생하면 모든 작업을 원상태로 되돌린다.
작업이 모두 성공했을 때만 최종적으로 DB에 반영이 된다.
모든 부분 작업이 정상적으로 완료하면 이 변경사항을 한꺼번에 DB에 반영한다
부분 작업이 실패하면 트랜잭션 실행전으로 되돌린다.
transaction을 정의하는 4가지 속성을 가르키는 약어
A(Atomicity)
원자성
: 안정성 보장을 위해 가져아할 성질 중의 하나로
트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장
(모두 성공이 아니면 모두 실패하게 하기. DB의 오염을 막기 위함)
C(Consistency)
일관성
: 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 DB 상태로 유지하는 것
I(Isolation)
격리성
: 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것
(A의 요청을 처리하는 동안 B의 요청은 잠시 기다리는 것)
D(Durability)
지속성
: 성공적으로 수행된 트랜잭션에 대한 로그가 남아야하는 성질로 런타임 오류나 시스템 오류가 발생하더라도 해당 기록은 영구적이여야 한다.