Transaction이란?
더 이상 나눌 수 없는 작업의 단위.
all or nothing
Transaction의 속성 - ACID
원자성(Atomicity)
나눌 수 없는 하나의 작업으로 다뤄져야 한다.
일관성(Consistency)
Tx 수행 전과 후가 일관된 상태를 유지해야한다.
고립성(Isolation)
각 Tx는 독립적으로 수행되어야 한다.
영속성(Durability)
성공한 Tx의 결과는 유지되어야 한다.
커밋(commit)괴 롤백(rollback)
커밋
작업 내용을 DB에 영구적으로 저장
롤백
최근 변경사항을 취소(마지막 커밋으로 복귀)
자동 커밋과 수동 커밋
자동 커밋
명령 실행 후, 자동으로 커밋이 수행(rollback 불가)
수동 커밋
명령 실행 후, 명시적으로 commit 또는 rollback을 입력
Tx의 isolation level
각 Tx를 고립시키는 정도
- READ UNCOMMITED - 커밋되지 않은 데이터도 읽기 가능(dirty read)
- READ COMMITED - 커밋된 데이터만 읽기 가능(phantom read)
- REPEATABLE READ - Tx의 시작 후 다른 Tx의 변경은 무시됨(default)
- SERIALIZABLE (고립도가 가장 높다) - 한 번에 하나의 Tx만 독립적으로 수행