DBMS/개념

16_ 트랜잭션 (Transaction)

seungwon-1 2025. 10. 9. 14:10

트랜잭션은 데이터베이스의 상태를 변화시키는 하나의 논리적 작업 단위를 말한다. 여러 개의 SQL 문장이 하나의 묶음으로 처리되어야 할 때, 그 전체 과정을 하나의 트랜잭션으로 간주한다.

예를 들어 “A 계좌에서 B 계좌로 1000원을 송금하는 과정”은 출금과 입금이 함께 성공하거나, 모두 실패해야 한다. 이처럼 데이터의 일관성을 보장하기 위한 최소 단위가 트랜잭션이다.


1. 트랜잭션의 특성 (ACID)

트랜잭션은 네 가지 주요 특성(ACID)을 만족해야 한다.

특성의미설명
Atomicity (원자성) 모두 수행되거나 전혀 수행되지 않아야 함 트랜잭션 내 모든 작업이 하나의 단위로 처리되어야 함
Consistency (일관성) 전후의 데이터 일관성 유지 트랜잭션 수행 전후 데이터베이스의 무결성 제약조건이 유지되어야 함
Isolation (격리성) 동시에 실행되는 트랜잭션 간 간섭 방지 한 트랜잭션의 작업이 다른 트랜잭션에 영향을 주지 않도록 보장
Durability (지속성) 커밋된 결과는 영구히 보존 트랜잭션 완료 후 시스템 오류가 나더라도 결과는 데이터베이스에 반영되어야 함

이 네 가지 특성은 데이터베이스의 신뢰성을 유지하는 핵심 원칙이다.

 

2. TCL (Transaction Control Language)

TCL은 트랜잭션을 제어하는 SQL 명령어들의 집합이다.
트랜잭션의 시작과 종료, 취소를 명시적으로 제어할 수 있다.

2.1 주요 TCL 명령어

명령어설명
COMMIT 트랜잭션의 변경 내용을 데이터베이스에 영구 반영
ROLLBACK 변경 내용을 취소하고 마지막 COMMIT 시점으로 되돌림
SAVEPOINT 트랜잭션 내에서 특정 지점을 저장 (부분 롤백 가능, 표준 SQL 아님)

 

2.2 TCL 예제

BEGIN TRANSACTION;

-- SQL 문장들 실행
SAVEPOINT sp1;

-- 추가 SQL 문장 실행
ROLLBACK TO sp1;

COMMIT;

위 예제는 sp1이라는 중간 저장점을 만들어 이후 일부만 되돌릴 수 있도록 한다.
ROLLBACK TO sp1은 해당 지점 이후의 변경만 취소한다.

 

3. 트랜잭션 관리의 중요성

트랜잭션 관리는 데이터의 무결성과 일관성을 유지하는 핵심 요소다.
다수의 사용자가 동시에 DB를 조작할 때 다음을 보장한다.

  • 데이터 손실 방지
  • 일관된 상태 유지
  • 오류 시 복구 용이
  • 비정상 종료로 인한 문제 최소화

적절한 트랜잭션 제어는 안정적인 데이터베이스 운영의 필수 요소다.

 

4. 실습 예제 – 은행 계좌 이체

-- 트랜잭션 시작
BEGIN TRANSACTION;

-- 출금 계좌에서 1000원 차감
UPDATE accounts
SET balance = balance - 1000
WHERE account_id = 'A001';

-- 입금 계좌에 1000원 추가
UPDATE accounts
SET balance = balance + 1000
WHERE account_id = 'B001';

-- 이체 내역 기록
INSERT INTO transactions (from_account, to_account, amount, transaction_date)
VALUES ('A001', 'B001', 1000, CURRENT_TIMESTAMP);

-- 모든 연산 성공 시 커밋
COMMIT;

-- 오류 발생 시 롤백
-- ROLLBACK;

위 시나리오에서 세 SQL 문장은 하나의 트랜잭션으로 묶여야 한다.
중간에 오류가 발생하면 ROLLBACK으로 전체 작업을 취소하고,
정상적으로 완료되면 COMMIT으로 결과를 영구 저장한다.

 

5. 트랜잭션 관련 고급 주제

  1. 동시성 제어 (Concurrency Control)
    여러 사용자가 동시에 데이터를 조작할 때, 데이터 충돌을 방지하는 기법이다.
    → 잠금(Lock)과 격리 수준(Isolation Level)로 제어.
  2. 교착 상태 (Deadlock)
    두 트랜잭션이 서로의 자원을 기다리며 영원히 대기하는 상태.
    → 교착 상태 탐지 및 해제 알고리즘으로 해결.
  3. 분산 트랜잭션 (Distributed Transaction)
    여러 데이터베이스 서버에 걸쳐 수행되는 트랜잭션으로,
    2-Phase Commit 프로토콜 등을 이용해 일관성 유지.

 

ㅇ 정리

트랜잭션은 데이터베이스의 신뢰성과 일관성을 보장하는 기본 단위이며,
TCL은 이를 제어하기 위한 명령어 집합이다.

트랜잭션 개념을 정확히 이해하고 적절히 활용하면
안정적이고 복구 가능한 데이터베이스 시스템을 설계할 수 있다.

'DBMS > 개념' 카테고리의 다른 글

18_ 조인(Join)과 서브쿼리(Subquery)  (0) 2025.10.14
17_ 뷰(view)  (0) 2025.10.11
15_ 인덱스(Index)  (0) 2025.10.07
14_ NULL과 NVL() 함수  (0) 2025.10.05
13_ 시퀀스  (0) 2025.10.03