본문 바로가기
Engineering/Etc

[펌] Transaction, Roll back and Commit

by Humaneer 2008. 8. 18.
멘토께서 검색을 하시다 DB에서 transaction, roll back, commit이 뭐냐? 라고 물어보셨는데 당최 기억이 하나도 나지 않는 것이었다. (사실 몰랐다고 함에 더 가깝다) DB수업을 거의 날로 들어먹었기 때문에 -_-;

아무튼 나는 학부 때 공부를 열심히 하지 않은 땡보로 낙인찍혀 가고있다. ㅋㅋ -_-;

Transaction, Roll back and Commit

네이버 지식인 원문 : Click

은행 현금인출기(ATM)에서 돈을 인출하는 과정을 생각해 봅시다.

현금인출을 하겠다고 기계에게 알려준뒤 현금카드를 넣어서 본인임을 인증받고, 인출할 금액을 선택하면 ATM 기는 돈을 내어줍니다. 이러한 거래에 있어서 지켜져야 할 중요한 것이 있습니다. 기계의 오동작 등으로 인하여 전산상으로는 돈을 인출한 것으로 입력이 되었는데 돈은 안나온다거나, 돈은 나왔는데 일련의 에러나 문제로 인하여서 돈을 인출한 것이 전산상으로 입력이 안되면 상당히 심각한 문제가 발생하겠죠.

때문에 전산상으로도 입력이 정상적으로 잘 되고, 돈도 인출이 정상적으로 잘 됨을 확인하고 나서야, 인출하는 하나의 과정이 정상적으로 처리되었음을 확인할 수 있습니다. 여기서 돈을 인출하는 일련의 과정이 하나의 묶음으로 처리되어야 함(=Transaction) 을 이해하실 수 있을것입니다. 그리고 혹시 처리도중 중간에 무슨 문제가 발생한다면 진행되던 인출과정 전체를 취소하고 다시 처음부터 시작하도록 해야 될 것입니다.

이것을 트랜잭션이라고 합니다. transaction 의 사전적의미와도 상통합니다만, 거래함에 있어서 거래하는 양측이 다 원하는 결과물을 얻어야만 정상적으로 처리되는 것이고 그렇지 않다라면 거래자체가 무산되어 원점으로 되돌려져(roll back) 버리는 것이죠. 전산적으로나 데이터베이스에 있어서도 이처럼 하나의 묶음으로 처리가 이루어져야 하는 모든것에 트랜젝션이란 개념이 사용됩니다.

롤백(roll back) 이란 것은 트랜잭션으로 인한 하나의 묶음처리가 시작되기 이전의 상태로 되돌려지는 것을 말합니다.

커밋(commit) 이란 것은 정상적으로 처리되어서 확정(실행을 위해서 엔터키를 치는 것처럼) 한다는 것이구요. 커밋하면 트랜잭션의 처리과정이 모두 반영되며 하나의 트랜잭션 과정이 끝나게 됩니다.

트랜잭션, 롤백... 이러한 단어들은 모든 처리가 정상적으로만 이루어진다고 한다면 필요없는 것이겠죠. 그러나 항상 예외나 에러는 발생하는 것이며, 이러한 것이 발생할 때에 적절한 처리를 위해서 존재하는 것입니다.