목차

개요


어떤 저자들은 2단계 커밋에서 유발되는 성능이나 가용성 문제 때문에 생기는 비용이 너무 커서 이를 지원할 수 없다고 주장했다. 우리는 항상 트랜잭션 없이 코딩하는 것보다 트랜잭션을 과용해서 병목지점이 생기는 성능 문제를 애플리케이션 프로그래머가 처리하게 하는 게 낫다고 생각한다.

냉혹한 현실 세계에서 데이터 시스템은 여러 문제가 생길 수 있다.

시스템이 신뢰를 지니려면 이런 문제들을 처리해 전체 시스템의 치명적인 장애로 이어지는 것을 막아야 한다. 그러나 내결함성을 갖춘 시스템을 구현하려면 비용이 크다.

모든 에러 케이스에 대해 고민해야 하고 테스트를 통해 해결책이 실제로 동작하는지도 확인해봐야 한다.

트랜잭션은 이런 문제를 단순화하는 메커니즘으로 채택되어 왔다.

트랜잭션은 애플리케이션에서 몇 개의 읽기와 쓰기를 하나의 논리적 단위로 묶는 방법이다.

개념적으로 한 트랜잭션 내의 모든 읽기와 쓰기는 한 연산으로 실행된다.