-
Transaction에 대해배움/백엔드 2022. 7. 18. 21:39반응형
- 여러 읽기/쓰기를 논리적으로 하나로 묶은 단위
- 트랜젝션 시작 - 여러 쿼리 실행 - 커밋(DB에 반영) 또는 롤백
- 모두 커밋(DB에 반영) 또는 롤백
이러한 트랜젝션(최소 단위)가 없다면, 클라이언트가 요청을 보내고 다시 그 결과를 받기 전까지 여러 쿼리문이 실행될 텐데,
ex) 1.1: select - 1.2: update - 1.3 insert .... 여기서 1.3에만 문제가 발생한다면?...
위의 쿼리문이 실행되는 도중 문제가 발생해 중단된다면 원상복귀를 위해 1.3을 제외한 1.1, 1.2만 revert해야하는 참사가 발생함.이러한 상황을 그저 하나의 트랜젝션을 롤백해주는 것만으로 해결.
트랜젝션의 범위는 커넥션 기준.
여러 메서드 호출이 하나의 커넥션으로 묶여야함.
그렇지 않으면 이미 특정 메서드가 DB에 반영이 되어버려 돌이키기 힘들 수 있음.
트랜젝션 전파
- 여러 메서드 호출이 한 트랜젝션에 묶이도록 하기 위해 필요
- 외부 API를 호출할 때는 롤백 처리에 매우 주의하여야한다.
정리.
트랜젝션의 핵심은 '원자성'. 모두 반영하거나. 모두 반영하지 않거나.
트랜젝션의 범위 중요: 문제가 발생했을 때 롤백해야 하는 범위.
반응형'배움 > 백엔드' 카테고리의 다른 글
Param, Query, Body (0) 2022.08.17 Kafka - Acks 옵션 (0) 2022.07.26 Kafka produce시 key-value값에 대해 (0) 2022.07.25 Bull Queue -> Kafka migration 시작 (0) 2022.07.21 Apache Kafka 시작 (0) 2022.07.18 - 여러 읽기/쓰기를 논리적으로 하나로 묶은 단위