3. transaction
3. transaction
Transaction (23. 12. 01)
트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는
하나의 논리적 기능을 수행하기 위한 작업의 단위
또는한꺼번에 모두 수행되어야 할 일련의 연산
들을 의미
Transaction이 필요한 순간
- A → B 에게 10,000원을 송금한다면?
- A와 B는 동시에 Update 되어야한다.
계좌에서 B계좌로 10,000 이체되는 과정은 다음과 같습니다.
- 데이터베이스에서 A의 은행계좌잔고 값을 메인 메모리로 읽어옵니다.
- 읽어온 A의 잔고 값에서 10,000을 감소시킵니다.
- 데이터베이스에서 B의 은행계좌잔고 값을 메인 메모리로 읽어옵니다.
- 읽어온 B의 잔고 값을 10,000 증가시킵니다.
- A의 계좌 값을 데이터베이스에 기록합니다.
- B의 계좌 값을 데이터베이스에 기록합니다.
- 데이터베이스에서 A의 은행계좌잔고 값을 메인 메모리로 읽어옵니다.
Transaction 속성
- 원자성
- 트랜잭션의 수행결과는 전부 수행되거나 전부 수행되지 않아야한다.
- 작업 중 문제가 생기면 최초의 상태로 돌아가는
RollBack
이 작동되어야 한다.
- 일관성
- 트랜잭션 수행 후 모델의 모든 제약 조건을 만족해야 한다.
- null, 정수 값… 등등
명시적 무결성 제약 조건
만족
- 고립성
- 트랜잭션은 다른 트랜잭션에 영향을 미치지 않아야한다.
임계 구역
처럼 두개의 트랜잭션이 한 데이터에 영향을 미친다면…?connection.setAutoCommit(false);
로 고립성을 완성
- 지속성
- 트랜잭션의 성공 결과는 장애 등에도 변함없이 영구적으로 저장되어야한다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.