데이터베이스
Transaction
다른 이름: 트랜잭션
정의
데이터베이스 논리적 작업 단위. ACID(원자성, 일관성, 격리성, 지속성) 보장. BEGIN→COMMIT/ROLLBACK. 격리 수준: Read Uncommitted, Read Committed, Repeatable Read, Serializable. MVCC(다중 버전 동시성 제어)로 락 최소화
상세 설명
기술 스펙
- BEGIN/START: 트랜잭션 시작
- COMMIT: 변경 영구 반영
- ROLLBACK: 변경 취소, 이전 상태 복원
- SAVEPOINT: 부분 롤백 지점 설정
- Isolation Level: Read Uncommitted(Dirty Read), Read Committed(Non-Repeatable Read), Repeatable Read(Phantom Read), Serializable
- MVCC: Snapshot Isolation, 읽기와 쓰기 동시 처리 (PostgreSQL, InnoDB)
- 2PL(2-Phase Locking): Shared Lock(S), Exclusive Lock(X)
실무 활용
- 계좌 이체: A 계좌 출금 + B 계좌 입금 원자적 처리
- 재고 차감: 주문 생성 + 재고 감소 동시 성공/실패
- 데이터 일관성: 외래키 제약, 중복 방지
- 장바구니 결제: 여러 테이블(주문, 결제, 배송) 일괄 처리
장점
- ACID 보장: 데이터 무결성
- 원자성: All-or-Nothing
- 격리성: 동시 트랜잭션 간섭 방지
- MVCC: 읽기 락 없이 성능 향상
단점 및 제약
- Dead Lock: 순환 대기로 교착 상태
- 성능 오버헤드: 락, 로그, MVCC 버전 관리
- 격리 수준 트레이드오프: Serializable은 안전하나 느림
- Long Transaction: 락 장시간 유지로 성능 저하
호환성
MySQL, PostgreSQL, SQL Server, Oracle 등 RDBMS 표준
표준 정보
표준화 기구: SQL 표준 (ANSI SQL-92)
출시 연도: 1970년