반응형
트랜젝션에 대해 알아보자!
반응형

1) 트랜잭션(Transaction)이란?
- DB에서 실행되는 작업을 하나의 논리적 작업 단위로 묶은 것입니다.
- 여러 SQL(INSERT/UPDATE/DELETE 등)을 한 묶음으로 처리해서,
- 다 성공하면 확정(COMMIT)
- 하나라도 실패하면 전부 취소(ROLLBACK) 합니다.
한 줄 정리
“같이 성공해야 의미가 있는 작업들을 한 덩어리로 묶는 것”
2) ACID 4가지 속성(이미지 핵심)
트랜잭션이 지켜야 할 기본 규칙입니다.
- 원자성(Atomicity)
- 전부 성공 or 전부 실패(중간 상태 금지)
- 일관성(Consistency)
- 트랜잭션 전/후에 데이터 규칙이 깨지면 안 됨(정합성 유지)
- 고립성(Isolation)
- 동시에 여러 트랜잭션이 돌아도 서로 간섭하지 않게 처리
- 지속성(Durability)
- COMMIT 된 결과는 장애가 나도 유지되어야 함
3) 예시로 이해: “계좌 이체”
A계좌에서 100원을 빼고, B계좌에 100원을 넣는 것은 반드시 같이 되어야 합니다.
- A에서 100 출금(UPDATE)
- B에 100 입금(UPDATE)
정상 시
- 두 UPDATE 모두 성공 → COMMIT
문제 상황
- 출금은 성공했는데 입금에서 오류 발생 → ROLLBACK
(그래야 “돈이 사라지는” 문제가 안 생김)
즉, 이체는 트랜잭션 1개로 묶어야 정합성이 지켜집니다.
4) “모델이 표현하는 트랜잭션” 포인트
이미지에서 말하는 요지는 이겁니다.
- 예: 쇼핑몰에서 주문(주문헤더) 저장과 주문상세 저장이 따로 처리되면 위험합니다.
- 주문은 저장됐는데 주문상세 저장이 실패하면
→ “주문은 있는데 상세가 없는 이상한 데이터”가 생깁니다.
- 주문은 저장됐는데 주문상세 저장이 실패하면
해결
- 주문 + 주문상세 저장을 하나의 트랜잭션으로 묶어야 합니다.
또 하나 주의:
- 어떤 환경은 auto commit(자동 커밋)이 켜져 있으면
쿼리 1개마다 자동으로 확정되어 롤백이 어려워질 수 있어 주의가 필요합니다.
5) 프로시저(Procedure)란?
- DB 안에 저장해 두고 호출하는 “SQL 작업 묶음(함수 같은 것)”입니다.
- 복잡한 작업(예: 이체)을 프로시저로 만들어 두면,
- 호출만으로 동일한 로직을 안전하게 실행할 수 있습니다.
- 보통 프로시저 안에서
- 성공하면 COMMIT
- 예외(오류) 나면 ROLLBACK
을 처리합니다.
예시(이체 프로시저 개념)
- TransferMoney(출금계좌, 입금계좌, 금액)
- 출금계좌 잔액 감소
- 입금계좌 잔액 증가
- 성공하면 COMMIT
- 실패하면 ROLLBACK
초간단 요약
- 트랜잭션 = 함께 처리되어야 하는 SQL을 한 묶음으로 처리
- ACID: 전부성공/전부실패(원자성), 규칙 유지(일관성), 동시 실행 간섭 최소(고립성), 결과 보존(지속성)
- 주문+주문상세, 계좌이체 같은 건 반드시 트랜잭션으로 묶는다
- 프로시저는 이런 작업을 DB 내부에 저장해 재사용/안전하게 실행하는 방식
반응형
'sqld' 카테고리의 다른 글
| 본질식별자 vs 인조식별자 정의 (0) | 2026.02.21 |
|---|---|
| NULL이 무엇인가요? (0) | 2026.02.21 |
| 계층형 데이터모델에 대해 알아봅시다! (0) | 2026.02.21 |
| 관계와 조인(Join)의 개념 (0) | 2026.02.21 |
| 반정규화는 무엇인가요? (0) | 2026.02.21 |