트랜잭션은 다른 트랜잭션과 독립적으로 동작해야한다.
A 트랜잭션이 하는 일을 B 트랜잭션은 모르게 해야한다.
하지만 현실적으로 완전한 격리성을 지켜주기란 쉽지 않다.
성능과 안전성의 트레이드 오프 관계에 있는 부분이다.
READ_UNCOMMITTED > READ_COMMITTED > REPEATABLE_READ > SERIALIZABLE 순서로 성능은 떨어지고 격리성 (고립성) 은 증가한다.
(격리성이 낮을 때 일어나는 문제 : Dirty read, phantom read 등 발생)
일반적으로는 MYSQL InnoDB의 기본값인 REPEATABLE_READ를 많이 활용한다.
commit 을 하게되면 지속(저장)이 꼭 된다.
DB 저장이 실패하더라도 모든 로그를 남겨서 DB에 순차적으로 반영이 되도록 한다.