트랜젝션에 대해 알아보자!
f
firststep 에디터
IT / 자격증 전문 라이터
2026년 2월 21일765
트랜젝션에 대해 알아보자!
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 내부에 저장해 재사용/안전하게 실행하는 방식
f
firststep 에디터 · IT / 자격증 전문 라이터
firststep.kr의 실무 에디터로서 무언가를 처음 도전하는 분들이 헤매지 않도록 검증된 지식과 실습 가이드를 작성합니다.
댓글 0개
댓글을 작성하려면 로그인이 필요합니다
간단한 이메일과 비밀번호로 3초 만에 가입하고 의견을 남겨보세요.
첫 번째 댓글을 남겨보세요!