
트랜잭션(TRANSACTION)
트랜잭션이란?
A계좌에서 B계좌로 100만원을 송금한다고 합시다.
이때 시스템은 ① A계좌 잔액 - 100만원, ② B계좌 잔액 + 100만원 두 작업을 수행하여야 합니다.
만약 ① A계좌 잔액 - 100만원 만 수행되고 ② B계좌 잔액 + 100만원,이라는 작업이 수행되기 전에 오류가 발생한다면, 100만원이 증발하는 상황이 발생하게 됩니다.
이렇게 오류가 발생하는 상황이 일어나지 않게 하려면,
① A계좌 잔액 - 100만원, ② B계좌 잔액 + 100만원 두 작업이 모두 수행되도록 하거나
① A계좌 잔액 - 100만원, ② B계좌 잔액 + 100만원 두 작업을 모두 수행되지 못하도록 해야 합니다.
따라서 두 작업을 묶어서 하나의 논리적 작업으로 처리해야 합니다. 즉, 하나로 묶인 논리작업은 모든 작업이 성공적으로 완료 되거나, 아예 실행되지 않은 상태(모든 작업이 취소된 상태)로 있어야 합니다.
이렇게 하나로 묶인 논리작업을 트랜잭션 이라고 한다.
트랜잭션의 특성
트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미합니다. 이번 게시글에서는 트랜잭션의 4가지 특징에 대해 알아보겠습니다. 트랜잭션의 핵심적인 특징 이라고 하는데요. 줄여서 'ACID' 라고 부릅니다. 트랜잭션은 아래와 같이 4가지 특징을 가지고 있습니다.
(1) 원자성 (Atomicity)
- 트랜잭션과 관련된 작업들은 부분적으로 실행되다가 중단되지 않는 것을 보장한다는 의미입니다.
- '완전히 실행되거나 또는 아예 실행되지 않는다(All Or Nothing)'
- 예를 들어 계좌로 돈을 보내는 중에 연결이 끊겼다면 이 작업은 아예 철회되어야 합니다.
(2) 일관성 (Consistency)
- 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미합니다.
- 여러 개의 작업이 수행될 때 이전에 수행된 작업이 다음 작업에 영향을 줘야 한다는 뜻입니다.
- 예를 들어 'a에 2를 대입', 'a에 3를 가산' 이라는 작업이 있으면 순서대로 수행해서 a에 5가 저장되어 있어야 합니다. (a = 2+3 이므로)
(3) 독립성 (Isolation)
- 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미합니다.
- 계좌 송금이 완료 될때까지, 다른 계좌로 송금할 수 없다는 것.
- 예를 들어 a에 0이 저장되어 있을 때 2를 대입하는 작업이 수행 중이라면 그 누구도 a값을 읽어올 수 없습니다. 따라서 해당 트랜잭션 작업이 끝났을 때 a값 2를 읽어오게 됩니다.
(4) 지속성 (Durability)
- 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미합니다.
- 예를 들어 a에 2를 대입했으면 a값을 변경하지 않는 이상 2가 계속 저장되어 있어야 합니다.
'DataBase' 카테고리의 다른 글
| TCL(Transaction Control Language) 명령어 (0) | 2025.11.01 |
|---|---|
| 서브 쿼리를 이용한 데이터 추가 (0) | 2025.10.04 |
| 데이터 삭제 DELETE (0) | 2025.10.03 |
| 테이블에 날짜 데이터 입력하기 (0) | 2025.10.03 |
| 컬럼에 NULL 데이터 추가 (0) | 2025.10.02 |





























