Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- interceptor
- 웹개발
- java
- 데이터베이스
- 백엔드개발자
- 백엔드
- AbstractAggregateRoot
- 캐시
- 프론트엔드
- spring event
- db
- JPA
- 인증
- Spring Boot
- DEVIEW2023
- 백엔드개발
- SnowFalke
- 세션
- devops
- 웹성능최적화
- http
- redis
- 보안
- 백엔드기초
- 인프라
- 클린코드
- Spring
- CS
- 네트워크
- 성능최적화
Archives
- Today
- Total
이것저것 개발기록
데이터베이스 트랜잭션과 ACID 원칙 본문
"내 계좌에서 돈은 빠져나갔는데, 상대방 계좌에는 입금이 안 됐다면?"
데이터의 일관성을 지켜주는 최후의 보루, 트랜잭션(Transaction)과 4대 원칙을 정리합니다.
1. 트랜잭션이란?
트랜잭션은 데이터베이스의 상태를 변화시키는 하나의 논리적 작업 단위입니다. 여러 개의 쿼리가 묶여서 "모두 성공(Commit)"하거나, 하나라도 실패하면 "아예 없었던 일(Rollback)"이 되어야 합니다.
2. ACID 원칙
- Atomicity (원자성): 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 하나라도 오류가 나면 전부 취소되어야 합니다.
- Consistency (일관성): 트랜잭션이 완료된 후에도 DB는 미리 정해진 규칙(제약 조건)을 만족해야 합니다.
- Isolation (격리성): 수행 중인 트랜잭션은 다른 트랜잭션의 간섭을 받지 않아야 합니다.
- Durability (지속성): 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 합니다.
💡 실무 노트
실무에서는 트랜잭션의 범위를 너무 크게 잡지 않는 것이 중요해요. 트랜잭션이 길어질수록 DB 커넥션을 오래 점유하게 되어 성능 저하의 원인이 될 수 있거든요.
팁: 스프링 프레임워크를 쓴다면 @Transactional 어노테이션을 활용하되, 외부 API 호출처럼 시간이 오래 걸리는 작업은 트랜잭션 범위 밖으로 빼는 것을 고려해 보세요.
'IT 이야기' 카테고리의 다른 글
| JWT(JSON Web Token)의 구조와 보안 가이드 (0) | 2025.12.27 |
|---|---|
| 자바 가비지 컬렉션(GC)의 원리와 메모리 관리 (0) | 2025.12.27 |
| Docker를 왜 쓰나요? 가상머신(VM)과의 결정적 차이 (0) | 2025.12.27 |
| 프로세스 vs 스레드, 핵심 차이 완벽 정리 (0) | 2025.12.27 |
| REST API 제대로 설계하기 (멱등성 완벽 이해) (0) | 2025.12.27 |