본문 바로가기
MySQL(MariaDB)

트랜잭션(Transaction) 이란?

by 코딩박사 2025. 7. 17.
반응형

트랜잭션(Transaction)은 데이터베이스에서 여러 작업을 하나의 단위로 묶어서 처리하는 기능입니다.

특히, 신뢰성과 정합성이 중요한 은행, 쇼핑몰, 포인트 시스템 등에서 매우 중요하게 사용됩니다.

 

트랜잭션이란?

트랜잭션은 하나의 논리적인 작업 단위로서, 모든 작업이 완전히 성공하거나, 전혀 반영되지 않아야 하는 작업 묶음입니다.

 

트랜잭션의 4대 특성 (ACID)

약자 의미 설명
A Atomicity (원자성) 전부 성공하거나, 전부 실패해야 함
C Consistency (일관성) 작업 전후 DB 상태가 일관돼야 함
I Isolation (격리성) 동시에 여러 트랜잭션이 실행되어도 서로 간섭 없어야 함
D Durability (지속성) 성공한 트랜잭션은 영구적으로 반영됨

 

트랜잭션 관련 SQL

명령어 설명
START TRANSACTION 또는 BEGIN 트랜잭션 시작
COMMIT 모든 작업을 확정 (저장)
ROLLBACK 오류 시 전체 작업을 취소

 

예제(은행 계좌 이체)

-- A계좌에서 B계좌로 1000원 이체

START TRANSACTION;

-- 1. A계좌에서 1000원 차감
UPDATE accounts SET balance = balance - 1000 WHERE account_id = 'A';

-- 2. B계좌에 1000원 입금
UPDATE accounts SET balance = balance + 1000 WHERE account_id = 'B';

-- 3. 모든 작업이 성공하면 저장
COMMIT;

-- 혹시 중간에 문제가 생기면
-- ROLLBACK; -- 취소 (사용자가 수동으로 실행하거나 오류 처리로 실행)

    - 위 과정 중 하나라도 실패하면 ROLLBACK 해서 원래 상태로 되돌릴 수 있습니다.

 

트랜잭션 사용 주의점

 

  • 트랜잭션은 InnoDB 엔진에서만 지원합니다 (MyISAM은 지원 안됨)
  • 트랜잭션 중에는 **잠금(Lock)**이 걸릴 수 있어 성능에 주의
  • 가능하면 짧게 유지 → 트랜잭션을 오래 잡고 있으면 다른 작업이 대기함

 

트랜잭션 확인

SHOW ENGINE INNODB STATUS;

 

    - 현재 트랜잭션 상태를 확인

SELECT * FROM information_schema.innodb_trx;

    - 실행 중인 트랜잭션 확인

반응형