1. 트랜잭션
ㅇ 처리 완결되어야 할 하나의 논리적인 작업 단위를 이루는 여러 동작들의 집합
- 例) 계좌이체 등 업무처리 완결의 기본단위
ㅇ 작업의 완전성을 보장해 주는 것
- 즉, 완벽 처리를 못하면 원래로 복구하여 일부 불일치 현상의 방지 등
2. [DBMS] 트랜잭션의 주요 특성 (ACID 특징)
ㅇ 원자성 (Atomicity)
- 트랜잭션 전체가 하나의 완전한 단위로서 성공 또는 실패이어야 함
ㅇ 일관성 (Consistency)
- 트랜잭션이 종료되면 변경된 데이터는 일관되고 정확한 상태이어야 함
ㅇ 독립성/고립성/격리성 (Isolation)
- 각 트랜잭션은 독립적이어서 다른 트랜잭션에 영향을 미치면 안됨
ㅇ 영구성 (Durability)
- 한 번 변하면 그 변경사항은 영구적. 즉, 되돌릴 수 없음
3. [DBMS] 트랜잭션 수행 과정
ㅇ BEGIN WORK (START TRANSACTION) : 트랜잭션 시작
- 트랜잭션의 시작을 알림
- 이 시점부터 이후의 모든 데이터 조작 연산(SELECT, INSERT, UPDATE, DELETE 등)은,
하나의 논리적 단위로 묶임
- 아직까지는 DB에 영구 반영되지 않은 상태 (임시 상태)
ㅇ 트랜잭션 수행 : 데이터 조작
- 사용자가 의도한 SQL 연산들을 실행
- DBMS는, 로그(Log)를 기록하여, 추후 장애 발생 시 복구 가능하도록 준비
- 이때, 데이터는 버퍼 캐시(Buffer Cache)에 반영될 수 있으나, 디스크에 확정 반영은 되지 않음
ㅇ COMMIT : 트랜잭션 정상 종료 및 작업내용의 반영
- 트랜잭션이 문제 없이 끝났음을 선언함
- 지금까지 수행한 모든 연산 결과가 데이터베이스에 영구적으로 반영됨
- 관련 로그도 함께 기록되어 이후 복구 시 참고 가능
ㅇ ROLLBACK : 트랜잭션 취소 (트랜잭션 이전 상태로 되돌림)
- 트랜잭션 중 오류 발생 또는 사용자가 취소를 요청한 경우 실행
- 트랜잭션 시작 시점(BEGIN WORK) 이전의 상태로 데이터를 되돌림
- COMMIT 이전의 모든 변경 내용은 무효화됨
4. [DBMS] 동시성 제어 (병행 제어) (Concurrency Control)
ㅇ 동시에 실행되는 여러 트랜잭션들이, 데이터베이스 일관성,무결성을 유지토록 제어하는 기법
ㅇ 목표
- 트랜잭션들이 직렬 실행된 것과 같은 효과(Serializability)를 보장
- 데이터 무결성 및 트랜잭션의 ACID 특성 중에 일관성(Consistency), 격리성(Isolation) 보장
ㅇ 대표적 기법
- 로킹 (Locking) : 데이터에 잠금을 설정하여 다른 트랜잭션이 동시에 접근하지 못하게 제어
.. 공유 잠금 (Shared Lock, S-lock), 배타 잠금(Exclusive Lock, X-lock)
- 2단계 로킹 (2PL, Two-Phase Locking) : Serializability을 보장하는 대표적 방법
- 타임스탬프 기법 (Timestamp Ordering) : 트랜잭션 시작 시각에 따라 순서를 강제
- 낙관적 검증 (Optimistic Concurrency Control) : 충돌이 드물다고 가정하고,
.. 검증 단계에서 충돌 여부를 확인
- 다중 버전 동시성 제어 (MVCC, Multi-Version Concurrency Control) : 여러 버전의 데이터를
.. 유지하여 충돌을 줄임 (PostgreSQL, Oracle 등)