어느 날 A씨는 B씨에게 빌린 돈 100만원을 송금하고 있습니다. 그렇게 되면 송금을 한 A씨의 계좌에는 100만원의 출금 내역이 기록되고 B씨에게는 100만원의 입금내역이 남을 것입니다.
그런데 만약 돈을 송금하던 도중 서비스에 문제가 생겨 100만원이 내 계좌에서 출금은 되었지만 상대방의 계좌에는 100만원이 입금되지 않는다면 그건 정말 큰 문제가 되겠죠? 이러한 경우를 대비하기 위하여 트랜잭션(Transaction)이라는 개념이 있습니다.
바로 함께 알아보겠습니다.
1. 트랜잭션(Transaction) 이란?
트랜잭션은 데이터베이스 상에서 하나의 논리적 기능을 수행하기 위한 작업의 단위입니다. 늘 그렇듯 처음 정의만 보고 이해하기는 쉽지 않습니다.
트랜잭션을 설명할 때에는 처음 사진처럼 은행 업무를 예시로 많이 드는데요. 위에서 말한 것처럼 송금을 하는 작업은 정상적으로 처리되어 돈이 사라졌는데 상대방의 계좌에서 입금기록이 없는 사고를 방지하기 위하여 송금이 되기부터 상대방의 계좌에 입금이 되기 까지를 하나의 작업 단위로 묶는 것입니다.
좀 더 쉽게 이해하기 위하여 단계별로 확인해보겠습니다.
1) A 고객의 잔액이 100만원 이상인지 확인
2) 100만원 이상이 확인되었다면, A 고객 잔액을 -100만원 UPDATE
3) B 고객의 잔액에 +100만원 UPDATE
이렇게 은행업무가 진행된다고 가정할 때 2번과 3번 작업은 반드시 함께 처리가 되어야 한다는 것이죠.
만약 3번 작업을 처리하다가 오류가 발생하는 경우에 이미 2번 작업이 처리가 되었다면 그 작업은 취소가 되어야 하는데 DB에서는 해당 내용을 롤백(ROLLBACK)이라고 말합니다. 반대로 2번과 3번 작업이 모두 무사히 처리되었다면 해당 내용을 정상적으로 적용하겠다는 커밋(COMMIT)이 수행됩니다.
2. 트랜잭션의 ACID 원칙
트랜잭션의 특징인 ACID 원칙을 살펴보겠습니다. ACID 원칙은 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Duarblility) 4개의 단어의 앞글자를 따와 만든 단어입니다.
데이터를 관리하는 데 있어 트랜잭션을 적절히 적용하는 것은 매우 중요합니다. 트랜잭션은 향후 스프링 프레임워크 트랜잭션 관련된 포스팅을 작성할 때 또 자세히 다룰 예정이니 기대해 주시기 바랍니다~
'DB' 카테고리의 다른 글
[DB] 예시와 함께 보는 SQL 날짜 함수 총 정리! (0) | 2024.06.09 |
---|---|
[DB] 예시와 함께 보는 SQL 숫자 함수 총 정리! (2) | 2024.06.08 |
[DB] 예시와 함께 보는 SQL 문자 함수 총 정리! (0) | 2024.06.07 |
[DB] 정규화 이것보다는 쉽게 설명 못합니다! (0) | 2024.06.05 |
[DB] 데이터 모델링 완벽 이해하기!(엔터티, 속성, 관계 / 개념, 논리, 물리 모델링) (0) | 2024.06.04 |