728x90
반응형
set autocommit false;
update member set money=10000 - 2000 where member_id = 'memberA';
update member set money=10000 + 2000 where member_id = 'memberB';
문제 발생
- 계좌 이체 실패 상황
- memberB는 12000원이 되어야 함
- 커밋 후
롤백
- 위와 동일한 문제 발생
- 롤백을 통해 계좌이체 실행 전으로 복구됨
정리
- 원자성: 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공하거나 모두 실패해야 한다.
- 성공하면 한번에 반영, 중간에 실패해도 마치 하나의 작업을 되돌리는 것처럼 간단히 되돌릴 수 있다.
- 오토 커밋: 쿼리를 하나 실행할 때마다 바로바로 커밋되어 버리기 때문에 계좌이체 중간에 실패하면 심각한 문제 발생한다.
- 트랜잭션 시작: 이런 종류의 작업은 꼭 수동 커밋 모드를 사용해야한다.
- 자동 커밋 모드 → 수동 커밋 모드: 트랜잭션 시작한다!
728x90
반응형
댓글