트랜잭션

개요

트랜잭션은 논리적 연산 단위로, 1개 이상의 sql문이 포함된다.
이것은 분할할 수 없는 최소 단위로, 전부 적용하거나, 전부 취소하는 개념으로 성립한다.

이를 지키기 위해 TCL를 사용한다.

ACID

트랜잭션으로서 지켜져야 할 요소가 있다.
다음의 네가지를 묶어서 ACID라고 부른다.

위의 특성을 만족하기 위해 실제로 트랜잭션이 발생하면 다른 트랜잭션이 수정을 가하지 못하도록 잠금 설정을 하는데, 이를 락킹이라 부른다.

하나의 디비에서도 이것을 고려하는 게 중요하지만, 특히 개발자 골머리를 앓게 만드는 게 바로 분산 환경에서의 트랜잭션..
한 비즈니스 로직이 두 개 이상의 디비에 조작을 가할 때, 어떻게 해야 트랜잭션을 수행할 수 있는가?
이에 관련하여 갖가지 전략이 존재하는데, 나중에 다뤄보겠다.

트랜잭션 고립 단계

이것도 나중에 따로 정리하자.
락킹을 무작정 걸어버리면 데이터베이스의 통신은 병목현상이 많이 발생할 것이다.
그래서 이것을 해소하기 위해 고립을 시키는 단계가 존재한다.
리피터블, 머시기..

참고