더북(TheBook)

2.3.5 트랜잭션

트랜잭션(transaction)은 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행돼야 할 일련의 연산을 의미합니다. 일반적으로 데이터베이스에서 데이터를 조작하는 연산을 할 때 트랜잭션 단위로 묶어 수행합니다.

계좌 이체를 예로 들어보겠습니다. A는 100만 원을 가지고 있고 B는 50만 원을 가지고 있을 때 A가 B에게 30만 원을 이체하는 경우에 ‘이체’는 트랜잭션이 될 수 있습니다. 이체 트랜잭션은 다음과 같은 연산으로 이뤄집니다.

A의 잔고가 30만 원 이상인지 조회합니다.

A의 잔고를 70만 원(100만 원-30만 원)으로 수정합니다.

B의 잔고를 80만 원(50만 원+30만 원)으로 수정합니다.

 

만약 ~ 과정을 트랜잭션 단위로 수행하는 것이 아니라 각각을 개별 연산으로 수행한다고 가정해봅시다. , 를 수행하고 을 수행하던 중 시스템 오류로 작업이 중단됐을 때, A의 잔고는 이체되고 남은 70만 원이지만 B의 잔고에는 이 반영되지 않아 잔고가 50만 원이라면 30만 원이 증발한 것입니다. 이러한 일을 방지하기 위해 데이터베이스에서는 모든 작업을 트랜잭션 단위로 수행합니다. 트랜잭션이 정상적으로 처리됐다면 커밋(commit)을 수행해 작업을 완료하고, 트랜잭션 단위로 작업을 수행하다가 오류가 발생하면 작업을 하기 전 상황으로 되돌리는 롤백(rollback)을 합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.