트랜잭션

    DBMS에서 트랜잭션과 동시성 제어는 데이터의 일관성과 시스템의 효율성을 유지하는 데 핵심적인 역할을 한다.

    1. 트랜잭션(Transaction)이란?

    트랜잭션은 DBMS에서 더 이상 나눌 수 없는 작업의 단위이다. 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위를 뜻한다.

    트랜잭션의 특징(ACID)

    • 원자성(Atomicity): 트랜잭션의 모든 연산이 완전히 수행되거나, 전혀 수행되지 않아야 한다.
    • 일관성(Consistency): 트랜잭션 실행 전후의 데이터베이스 상태가 일관되어야 한다.
    • 독립성(Isolation): 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 한다.
    • 지속성(Durability): 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 한다.

    트랜잭션의 예시

    START TRANSACTION
        -- 아래 블록의 명령어들은 하나의 단위로 처리됨
        -- 모두 성공하거나, 모두 실패한다.
        A의 계좌에 돈이 얼마나 있는지 읽기;
        A의 계좌 잔액이 1000원 보다 많은지 확인하기;
        A의 계좌에서 1000원 인출하기;
        A의 계좌에 남은 금액 작성하기;
    COMMIT

     

    2. 동시성 제어(Concurrency Control)

    동시성 제어는 여러 사용자나 프로그램이 동시에 데이터베이스에 접근할 때 데이터의 일관성을 유지하면서 최대한의 성능을 보장하는 기술이다.

    동시성 제어의 필요성

    1. CPU 자원의 효율적 활용
    2. 디스크 I/O 작업으로 인한 대기 시간 최소화
    3. 여러 사용자의 동시 접근 지원

    동시성 제어 메커니즘

    1. 락(Lock) 기반 제어:
      • 공유 락(Shared Lock): 읽기 작업에 사용
      • 전용 락(Exclusive Lock): 쓰기 작업에 사용
    2. 트랜잭션 스케줄링:
      • DBMS는 여러 트랜잭션의 동시 실행을 관리하여 직렬 실행과 동등한 결과가 나오도록 보장한다.
    3. 데드락(Deadlock) 처리:
      • 교착 상태 발생 시 하나의 트랜잭션을 중단하고 재시작하는 방식으로 해결한다.

    3. 트랜잭션의 원자성 보장

    DBMS는 시스템 충돌 상황에서도 트랜잭션의 원자성을 보장해야 한다.

    원자성 보장 메커니즘

    1. 로깅(Logging):
      • 모든 데이터베이스 작업을 로그에 기록합니다.
       
    2. WAL(Write-Ahead Logging) 프로토콜:
      • 데이터 변경 전 로그를 먼저 기록하여 안정성을 확보한다.
    3. 복구(Recovery):
      • 시스템 충돌 후 로그를 사용하여 부분적으로 실행된 트랜잭션의 효과를 취소한다.

    왼쪽은 Transaction에 들어있는 작업단위가 성공적으로 처리되어 로깅을 한 경우, 오른쪽은 작업단위 중 실패한 것이 있어 ROLLBACK한 경우

    'CS > 데이터베이스' 카테고리의 다른 글

    데이터 독립성  (3) 2024.09.21

    댓글