ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DB] 트랜잭션
    데이터베이스 2021. 4. 24. 14:35
    728x90

    트랜잭션

    트랜잭션은 데이터베이스가 데이터를 읽거나 쓰는 최소 단위

     

    트랜잭션 관리의 주요 이슈

    • 하드웨어 / 소프트웨어 / 트랜잭션 실패
    • 여러 트랜잭션을 동시에 실행 할 수 있는 동시성 향상

    ACID

    트랜잭션은 ACID 를 지녀야한다.

    Atomicity - 원자성 : All or not. 즉 하나의 트랜잭션 내부의 연산들은 모두 성공하거나 모두 실패해야함

    Consistency - 일관성 : 명시적 / 묵시적 integrity consistency 를 모두 만족시켜야함

    • 명시적 consistency : PK(Primary Key), FK(Foreign Key), UK(Unique Key) 등 명시적으로 정의된 규칙
    • 묵시적 consistency : 데이터의 흐름상 자연스럽게 형성되는 규칙. 예) A -> B 송금 전과 후의 A + B의 총액은 동일하다.
    • 트랜잭션의 수행 중에는 inconsistent 해도 되지만 끝났을 때는 반드시 consistency 를 보장해야함

    Isolation - 격리성 : 서로 다른 트랜잭션들이 동시에 수행될 때도 서로 완전히 격리되어 그 결과에 영향을 미쳐서는 안됨. 수행된 순서에 따라 결과가 달라질 수는 있으나 동시에 실행되는 트랜잭션들은 서로 영향을 미치지 않는다는 것이 뽀인트

    Durability - 내구성 : 트랜잭션이 성공적으로 저장되었다면 시스템 실패(System failure) 가 있더라도 저장장치에 완전히 저장됨을 보장하는 것

    Concurrent Execution (동시 실행)

    여러 트랜잭션이 동시에 실행되면 throughput(단위 시간당 처리하는 트랜잭션의 수)이 증가하고, Average response time(사용자가 응답을 받기까지의 평균 대기시간)을 감축시킬 수 있다

    데이터베이스의 consistency 를 보장하면서 동시성을 지원하는 것은 isolation을 얼마나 잘 지원하는가에 달림

     

    T1과 T2를 서로 간섭 없이 수행할 수 있는 가장 쉬운 방법은 동시성을 제거하고 Serially 수행하는 것임

    단점 : Average user response time 의 하락, Throughput 의 하락

     

    트랜잭션의 상태

    1. Active : 현재 실행 중인 상태
    2. Partially committed : 커밋은 안되었으나 마지막 statement 까지 수행을 마친 상태
    3. Aborted : 취소 상태
    4. Committed : 모든 처리를 마친 성공적인 상태

     

    댓글

Designed by Tistory.