
공통 질문
출처:
https://www.youtube.com/watch?v=sLJ8ypeHGlM
transaction?
- 단일한 논리적인 작업 단위(a single logical unit of work)
- 논리적인 이유로 여러 sql문을 단일 작업으로 묶어서, 나눠질 수 없도록 만듦
- transaction 내부에서 일부만 성공, 일부는 실패하는 경우는 발생하지 않는다
j가 h에게 20만원 이체 하기


이렇게 분리하게 되면 왼쪽거가 실패하면, 또는 오른쪽만 실패하면 데이터의 정합성이 깨진다
따라서 두개가 성공해야 한다는 단일 작업으로 묶어준다

transaction 사용 패턴

1. 트랜잭션 적용: start transaction

2. 트랜잭션 중에 롤백



Auto commit




auto commit 비활성화

커밋안한 상태로 롤백하면?

start transaction을 하면 auto commit은 비활성화 된다

java에서 transaction

1. db 연결
2. auto commit = false -> 트랜잭션 시작
3. 커밋
4. 롤백
5. auto commit = true -> 트랜잭션 종료
@Transaction을 적용하면 위 5개를 알아서 해줌

ACID

1. Atomicity
모두 성공, 모두 실패



2. Consistency: 일관성
규칙을 지키는가?


잔액은 0보다 커야하므로 -20만원은 실패 해야 한다: 일관성을 해친다


규칙을 깨면 rollback을 한다
3. Isolation 분리

isolaction을 너무 지키면, 동시성이 낮아진다
장단점이 있기 때문에, isolation level을 잘 튜닝해야한다



4. Durability 영존성
db에 반영한다


영구적이란? 전원이 나가도 다시 읽을 수 있다
'학습 기록 (Learning Logs) > CS Study' 카테고리의 다른 글
lock (0) | 2025.02.06 |
---|---|
database (0) | 2025.02.06 |
isolation level (0) | 2025.02.03 |
SQLite (0) | 2025.02.03 |
Tree (0) | 2025.02.03 |