일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MVVM
- ios
- 이론
- struct
- 스트럭트
- SwiftUI
- swift
- 네트워크
- 프로토콜
- 옵셔널
- WeatherKit
- 세종대학교
- mvc
- GCD
- uikit
- RxSwift
- 반응형
- 기초문법
- 대표
- collectionview
- CS
- 토이프로젝트
- 실습
- 구름톤 유니브
- 앱개발
- Kingfisher
- 학과별커뮤니티
- 동시성
- Optional
- async
- Today
- Total
스윞한 개발자
DB Transaction / ACID 본문
안녕하세요! 이번 포스팅에서는 DB Transaction / ACID 에 대해 정리해 보겠습니다!

DB 트랜잭션(Transaction)과 ACID란?
1. DB 트랜잭션이란?
우선 정의를 살펴보면,, 데이터베이스(DB)에서 트랜잭션(Transaction)은 여러 데이터베이스 연산이 하나의 논리적 단위로 묶여서 실행되는 일련의 작업들을 말합니다. 트랜잭션은 여러 데이터베이스 작업을 하나의 단위로 처리하여, 데이터의 일관성 및 무결성을 보장합니다.
... 이렇게 말하면 감이 잘 안 오실 텐데요!
은행 계좌 간 이체 작업을 예를 들겠습니다. "계좌 A에서 돈을 빼고, 계좌 B에 돈을 넣는" 작업은 둘 다 하나의 트랜잭션(연산단위)으로 묶여야 하며, 한쪽만 실행되고 다른 쪽은 실행되지 않는 경우는 허용되지 않습니다.
트랜잭션은 원자성, 일관성, 고립성, 지속성(ACID) 이라는 네 가지 중요한 속성을 보장해야 합니다.
2. ACID란?
ACID는 데이터베이스 트랜잭션의 신뢰성과 안전성을 보장하기 위해 필요한 네 가지 속성입니다. ACID는 각 글자의 첫 글자를 따서 만들어졌습니다:
- A (Atomicity) 원자성
- C (Consistency) 일관성
- I (Isolation) 고립성
- D (Durability) 지속성
각각의 속성에 대해 자세히 살펴보겠습니다.
ACID의 네 가지 속성
1. 원자성 (Atomicity)
원자성은 트랜잭션이 완전히 실행되거나 전혀 실행되지 않아야 한다는 원칙을 말합니다. 즉, 트랜잭션 내의 모든 연산은 하나의 단위로 처리되며, 중간에 오류가 발생하면 모든 연산이 완전히 롤백(취소)되어야 합니다. 예를 들어, 은행 계좌 이체에서 "출금"과 "입금"이 하나의 트랜잭션에 묶여 있으면, 두 작업 중 하나라도 실패하면, 트랜잭션 전체가 취소되고, 데이터는 처음 상태로 돌아가야 합니다. "A 계좌에서 100만원을 출금하고, B 계좌에 100만원을 입금하는" 두 가지 작업이 트랜잭션에 포함된다면, 중간에 문제가 생겨서 하나라도 실패하면 두 작업 모두 취소되어야 합니다.
2. 일관성 (Consistency)
일관성은 트랜잭션이 실행되기 전과 후의 데이터베이스 상태가 유효한 상태여야 한다는 원칙입니다. 즉, 트랜잭션이 완료되면 데이터베이스는 정해진 규칙을 따르는 상태여야 하며, 데이터베이스의 무결성 제약 조건을 위반해서는 안 됩니다. 은행 시스템에서 트랜잭션이 진행되면서 "출금 금액이 계좌 잔고를 초과하지 않도록" 등의 제약 조건을 만족해야 합니다. 트랜잭션이 실행된 후에도 모든 제약이 유지되어야 합니다.
3. 고립성 (Isolation)
고립성은 동시에 실행되는 여러 트랜잭션들이 서로 영향을 미치지 않도록 격리된 환경에서 실행되어야 한다는 원칙입니다. 트랜잭션이 완료되기 전까지 다른 트랜잭션이 그 결과를 볼 수 없어야 하며, 다른 트랜잭션은 서로 영향을 미치지 않아야 합니다. 이는 데이터 충돌을 방지하고, 동시성 문제를 해결하는 데 중요합니다. 트랜잭션 A와 트랜잭션 B가 동시에 실행될 때, C라는 작업이 중간에 참여할 수 없는 것과 같습니다.
4. 지속성 (Durability)
지속성은 트랜잭션이 완료되면, 그 결과가 영구적으로 저장되어야 한다는 원칙입니다. 즉, 트랜잭션이 커밋된 후에는 시스템에 장애가 발생해도 데이터가 손실되지 않도록 해야 합니다. 트랜잭션 완료 후에는 데이터베이스에 반영된 모든 변화가 디스크에 기록되어야 하며, 시스템 복구 시에도 그 상태를 유지할 수 있어야 합니다. 은행 이체 트랜잭션이 완료되었으면, 그 결과는 반드시 디스크에 기록되고, 서버가 다운되더라도 트랜잭션 결과는 보존되어야 합니다.
트랜잭션과 ACID의 중요성
트랜잭션과 ACID 속성은 데이터베이스의 신뢰성을 보장하는 중요한 기초입니다. 데이터베이스 시스템은 많은 사용자와 트랜잭션을 동시에 처리하기 때문에 ACID 속성이 필수적입니다. 만약 ACID 속성을 제대로 구현하지 않으면, 데이터 무결성, 일관성, 고립성, 지속성 등이 보장되지 않아 시스템에 심각한 오류가 발생할 수 있습니다.
예를 들어, 금융 시스템에서 트랜잭션이 제대로 처리되지 않으면 돈이 사라지거나 잘못 입금되는 문제가 발생할 수 있습니다. 통장잔고가 갑자기 사라지게 된다면,, 끔찍한 일이 생길 것 같습니다. 반대로 갑자기 통장잔고에 돈이 생긴다면...!
DB 트랜잭션과 ACID 속성은 데이터베이스의 안정성과 신뢰성을 보장하기 위한 중요한 개념입니다. 이 네 가지 속성은 트랜잭션이 어떻게 작동해야 하는지, 그리고 여러 사용자가 동시에 데이터를 처리할 때 발생할 수 있는 문제들을 어떻게 해결할지에 대한 명확한 규칙을 제공합니다.
긴 글 읽어주셔서 감사합니다. 잘못된 정보에 대한 피드백은 언제나 환영입니다! 더 좋은 글로 찾아뵙겠습니다 감사합니다!

참고
https://velog.io/@shasha/Database-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98-%EC%A0%95%EB%A6%AC
[Database] 트랜잭션 정리
트랜잭션 총 정리
velog.io
https://gyoogle.dev/blog/computer-science/data-base/Transaction.html
DB 트랜잭션(Transaction) | 👨🏻💻 Tech Interview
DB 트랜잭션(Transaction) 트렌잭션이란? 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 상태를 변화시킨다는 것 → SQL 질의어를 통해 DB에 접근하는 것 작업 단위 → 많은 SQL 명령문들
gyoogle.dev
'Swift 이론' 카테고리의 다른 글
Hot/Cold Observable, Multi/UniCast (1) | 2025.03.04 |
---|---|
DAO, DTO, Entity + Repository Pattern (2) | 2025.02.17 |
DiffableDatasource의 이해 (0) | 2025.02.16 |
iOS - ARC(Swift 메모리 관리 기법) (2) | 2025.02.09 |
Actor 톺아보기 👀 (0) | 2025.02.04 |