ACID   Transaction   트랜잭션, 트랜젝션

(2025-09-17)

Concurrency Control, 병행 제어, 동시성 제어


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 등)

회복,병행제어
1. 트랜잭션  
용어해설 종합 (단일 페이지 형태)

"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"
     [정보통신기술용어해설]