Transaction
Concept
- 여러 읽기/쓰기를 논리적으로 하나로 묶음
- 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위
- 쪼개질 수 없는 업무처리의 단위
실무
insert, update, delete 등 상태를 변경하는 명령어를 하나의 집합으로 만들고 이 집합은 쪼개질 수 없는 최소 단위로 만들어 안정성을 확보한다.
처리 중 오류가 발생하면 모든 작업을 원상태로 되돌린다.
특징
원자성 (Atomicity)
트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다는 것이다
all or nothing
일관성 (Consistency)
트랜잭션이 진행되는 동안에 데이터베이스가 변경 되더라도 업데이트된 데이터베이스로 트랜잭션이 진행되는것이 아니라,처음에 트랜잭션을 진행 하기 위해 참조한 데이터베이스로 진행된다.
이렇게 함으로써 각 사용자는 일관성 있는 데이터를 볼 수 있는 것이다.
독립성 (Isolation)
둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 어떤 하나의 트랜잭션이라도,다른 트랜잭션의 연산에 끼어들 수 없다는 점을 가리킨다.
하나의 특정 트랜잭션이 완료될때까지, 다른 트랜잭션이 특정 트랜잭션의 결과를 참조할 수 없다.
지속성 (Durability)
트랜잭션이 성공적으로 완료됬을 경우, 결과는 영구적으로 반영되어야 한다
Insight
Transaction 수행과정이 길면, 서비스 장애가 빈번히 발생한다. 짧게 여러번 하는것도 괜찮은 방법이다.
순서가 중요하면, 순서를 관리하는 또하나의 시스템이 있으면 좋다.
Transaction 중 외부 연동이 섞여 있으면, 롤백 처리에 주의