반응형
트랜잭션(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;
- 실행 중인 트랜잭션 확인
반응형
'MySQL(MariaDB)' 카테고리의 다른 글
MySQL에서 사용하는 데이터 타입(Data Type) 정의 (26) | 2025.07.21 |
---|---|
카테고리 구조(분류 체계)를 DB로 설계할 때 가장 일반적인 방법 (22) | 2025.07.16 |
MySQL의 가장 기본이자 중요한 개념인 CRUD 설명 (29) | 2025.07.09 |
MySQL 사용자 생성 및 권한 설정 (22) | 2025.07.08 |
DB(Database/데이터베이스)의 종류는? (42) | 2025.06.30 |