2026-03-09
트랜잭션(Transaction)
트랜잭션이란
데이터베이스에서 하나의 논리적인 작업 단위
⇒ 여러 SQL 작업을 하나의 묶음으로 처리한다.
-
예시
계좌 A → 계좌 B 송금- A 계좌 돈 차감
- B 계좌 돈 증가 둘 중 하나라도 실패하면 전체 작업을 취소 (Rollback)
트랜잭션 특징 (ACID)
- Atomicity (원자성)
작업은 모두 성공하거나 모두 실패 예시
A 계좌 -10000 B 계좌 +10000하나라도 실패하면 전체 rollback
- Consistency (일관성)
트랜잭션 전후 데이터 규칙 유지 예시
잔액은 음수가 될 수 없음 - Isolation (격리성)
여러 트랜잭션이 서로 간섭하지 않도록 동시에 실행되는 트랜잭션 문제 발생 가능 예시
- Dirty Read
- Phantom Read
- Durability (지속성)
트랜잭션이 commit 되면 데이터는 영구 저장 서버 꺼져도 유지
트랜잭션 상태

Active
→ Commit
→ Failed
→ Rollback
트랜잭션 격리 수준 (Isolation Level)
| 수준 | 특징 |
|---|---|
| Read Uncommitted | 커밋 안된 데이터 읽음 |
| Read Committed | 커밋된 데이터만 읽음 |
| Repeatable Read | 같은 데이터 항상 동일 |
| Serializable | 완전 격리 |
격리 수준이 높을수록 동시성 낮아짐
트랜잭션 관련 문제
- Dirty Read: 커밋되지 않은 데이터 읽음
- Non-repeatable Read: 같은 데이터를 두 번 읽었는데 값이 바뀜
- Phantom Read: 조회 결과 행이 갑자기 늘어남
Spring에서 트랜잭션
@Transactional
- commit
- rollback
- 트랜잭션 관리
참고자료
- https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98Transaction-%EC%9D%B4%EB%9E%80-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC
- https://innovation123.tistory.com/61
- https://hstory0208.tistory.com/entry/%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98%EC%9D%B4%EB%9E%80-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%82%AC%EC%9A%A9%EB%B2%95%EC%97%90-%EB%8C%80%ED%95%B4-%EC%89%BD%EA%B2%8C-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90
- https://velog.io/@onejaejae/Transaction-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC-1