작성
·
198
답변 1
0
안녕하세요, SJ 님! 공식 서포터즈 codesweaver 입니다.
데이터베이스는 테이블의 로우 별로 트랜잭션을 관리합니다. 그러나 각 쿼리들 간의 관계를 알 순 업습니다.
만약 은행에서 A가 B에게 천원을 이체 한다고 하면 다음과 같은 쿼리가 발생할텐데요.
1) A, B 계좌 및 잔고 조회
2) A 계좌 천원 차감
3) B 계좌 천원 증가
데이터베이스는 여러 사람이 동시에 계좌/잔고 테이블에 접속할때 문제(동시성 문제)를 트랜잭션으로 관리할 순 있으나 1), 2), 3) 의 프로세스가 '하나의 작업'으로 처리되어야 한다는 사실은 알 수 없습니다. (하나의 작업이란 건, 1), 2), 3) 중 단 하나의 작업이라도 실패하면, 모든 작업을 실패로 처리한다는 뜻입니다. 원자성이라고도 합니다)
그래서 애플리케이션에서도 트랜잭션 단위로 프로세스를 묶을 수 있다면 매우 유용합니다.
데이터베이스는 보통 모든 쿼리가 실행된 직후 자동으로 커밋 을 하도록 되어있는데요,
애플리케이션은 이 자동 커밋 설정을 제어하며 모든 프로세스의 원자성을 구현합니다.
감사합니다.