Computer Science

[DB] 트랜잭션이란? Transaction

Supreme_YS 2022. 3. 11. 12:00
  • 트랜잭션
    • 하나의 작업을 수행하기 위해서 필요한 데이터베이스 연산을 묶어 놓은 것
    • 데이터베이스 연산이라고하는것은 SELECT, UPDATE, INSERT, DELETE와 같은 행동을 한 것
    • 예. 송금은 1. 보내는 사람의 계좌에서 돈을 빼고, 2. 받는 사람의 계좌에 돈을 추가하는 두 가지 행위가 묶인 한 작업이다.

 

  • 트랜잭션 4가지 성질(ACID)
    • Atomicity(원자성) : transaction의 작업이 부분적으로 성공하는 일이 없도록 보장하는 성질이다.
      • 송금하는 사람의 계좌에서 돈은 빠져나갔는데 받는 사람의 계좌에 돈이 들어오지 않는 일은 없어야 한다.
    • Consistency(일관성) : transaction이 끝날 때 DB의 여러 제약 조건에 맞는 상태를 보장하는 성질이다.
      • 송금하는 사람의 계좌 잔고가 0보다 작아지면 안 된다.
    • Isolation(독립성) : transaction이 진행되는 중간 상태의 데이터를 다른 transaction이 볼 수 없도록 보장하는 성질이다.
      • 송금하는 사람의 계좌에서 돈은 빠져나갔는데 받는 사람의 계좌에 돈이 아직 들어가지 않은 DB 상황을 다른 transaction이 읽으면 안 된다.
    • Durability(지속성) : transaction이 성공했을 경우 해당 결과가 영구적으로 적용됨을 보장하는 성질이다.
      • 한 번 송금이 성공하면 은행 시스템에 장애가 발생하더라도 송금이 성공한 상태로 복구할 수 있어야 한다.

 

  • 트랜잭션의 Commit, Rollback 연산
    • Commit
      • 하나의 트랜잭션이 성공적으로 끝나서 데이터베이스가 일관성있는 상태에 있음 을 의미한다.
    • Rollback
      • 하나의 트랜잭션 처리가 비정상적으로 종료되었을 때의 상태를 뜻한다.
      • Rollback 이 이뤄진다면 트랜잭션을 다시 실행하거나 부분적으로 변경된 결과를 취소할 수 있다.

 

  • 트랜잭션의 상태

  • Active
    • 트랜잭션이 현재 실행 중인 상태
  • Failed
    • 트랜잭션이 실행되다 오류가 발생해서 중단된 상태
  • Aborted
    • 트랜잭션이 비정상 종료되어 Rollback 이 수행된 상태
  • Partially Committed
    • 트랜잭션의 연산이 마지막까지 실행되고 Commit이 되기 직전 상태
  • Committed
    • 트랜잭션이 성공적으로 종료되어 Commit 연산을 실행한 후의 상태