[Database]트랜잭션(Transaction)이란
트랜잭션(Transaction)이란?
- 데이터베이스의 트랜젝션이란 데이터의 추가, 수정, 삭제 등을 처리하는 여러 단계들을 하나로 묶는 작업을 의미한다.
예로 들자면 은행에서 계좌 이체를 진행을 할때 송신자가 일정 금액을 보내면 송신자 계좌의 금액은 감소 되어야하고 수신자의 계좌에서는 금액이 증가되어야하는데 이 과정이 트랜잭션 단위로 이루어져야한다. 만약 해당 작업을 진행을 하는데 어떠한 단계에서든 문제가 발생이 된다면 위 과정이 모두 취소가 되고 원 상태로 복구 되어야한다.
- 트랜잭션은 성공적으로 처리되어 데이터베이스의 무결성과 일관성을 보장하려면 4가지 특성인 ACID를 만족해야한다.
트랜잭션의 특징(ACID)
Atomicity(원자성)
- 트랜잭션을 구성하는 연산들이 모두 정상적으로 실행되거나 하나도 실행되지 않아야 한다는 all-or-nothing 방식을 의미한다.
Consistency(일관성)
- 트랜잭션이 성공적으로 수행된 후에도 데이터베이스가 일관성 있는 상태를 유지해야한다는 것을 의미한다.
- 데이터베이스가 일관성이 있다는 것은 첫번째로 트랜잭션이 커밋되면 데이터베이스에 적용한 제약조건을 위반하지 않는다는 것을 보장을 의미한다.
예로 들자면 사용자가 번호를 저장하는데 번호를 저장하는 란에 not Null 제약이 있다면 빈칸으로 저장할 수 없어야한다.
- 두번째로는 트랜잭션의 작업이 애플리케이션에서 의도하고자 한 작동이 정상적으로 일어난다는 보장을 의미한다.
예로 들자면 재고가 떨어졌을 때, 더 이상 판매를 할 수 없도록 제한해야 하는것을 의미한다.
Isolation(독립성, 격리성, 고립성)
- 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는것을 의미한다.
- 데이터베이스의 트랜잭션도 성능과 효율성을 위해 병행처리 될수 있는데 흔히 얘기하는 데이터가 꼬이는 것을 방지하기 위해서 독립성과 고립성을 보장한다는것이다.
예로 들자면 A은행 직원이 계좌에서 돈을 빼는 도중에 B은행 직원이 동일한 계좌에서 작업을 할수 없는것을 의미한다.
Durability(지속성)
- 트랜잭션이 성공적으로 진행이 됐을때 영원히 반영되어야하는것을 의미한다.
- 시스템 문제가 발생하거나, 데이터베이스의 일치 작업을 수행 하더라도 데이터베이스의 내용은 기존과 같이 유지되는것을 말한다.
Reference
Blog
Blog