Transaction 이란?
- 더 이상 나눌 수 없는 작업의 단위
- 계좌 이체의 경우, 출금과 입금이 하나의 Tx로 묶여야 됨.
- '모' 아니면 '도' 출금과 입금이 모두 성공하지 않으면 실패
Transaction의 속성 - ACID
- 원자성(Atomicity) - 나눌 수 없는 하나의 작업으로 다뤄져야 한다.
- 일관성(Consistency) - Tx 수행 전과 후가 일관된 상태를 유지해야 한다.
- 고립성(Isolation) - 각 Tx는 독립적으로 수행되어야 한다.
- 영속성(Durability) - 성공한 Tx의 결과는 유지되어야 한다.
commit & rollback
commit - 작업 내용을 영구적으로 DB에 저장
rollback - 최근 변경사항을 취소(마지막 커밋으로 복귀)
commit을 하고 나면 rollback했을때 commit 시점으로만 되돌아간다.
commit전 시점으로는 되돌아 갈 수 없다.
Tx의 isolation level
READ UNCOMMITED(dirty read) - 커밋되지 않은 데이터도 읽기 가능
READ COMMITED(Phantom read) - 커밋된 데이터만 읽기 가능
REPEATABLE READ(default) - Tx이 시작된 이후 변경은 무시됨
SERIALIZABLE - 한번에 하나의 Tx만 독립적으로 수행