본문 바로가기
sqld

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

by 자격증원톱 2026. 2. 21.
반응형

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

반응형

 

1) 트랜잭션(Transaction)이란?

  • DB에서 실행되는 작업을 하나의 논리적 작업 단위로 묶은 것입니다.
  • 여러 SQL(INSERT/UPDATE/DELETE 등)을 한 묶음으로 처리해서,
    • 다 성공하면 확정(COMMIT)
    • 하나라도 실패하면 전부 취소(ROLLBACK) 합니다.

한 줄 정리
“같이 성공해야 의미가 있는 작업들을 한 덩어리로 묶는 것”


2) ACID 4가지 속성(이미지 핵심)

트랜잭션이 지켜야 할 기본 규칙입니다.

  1. 원자성(Atomicity)
    • 전부 성공 or 전부 실패(중간 상태 금지)
  2. 일관성(Consistency)
    • 트랜잭션 전/후에 데이터 규칙이 깨지면 안 됨(정합성 유지)
  3. 고립성(Isolation)
    • 동시에 여러 트랜잭션이 돌아도 서로 간섭하지 않게 처리
  4. 지속성(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(출금계좌, 입금계좌, 금액)
    1. 출금계좌 잔액 감소
    2. 입금계좌 잔액 증가
    3. 성공하면 COMMIT
    4. 실패하면 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