트랜잭션

JeongO·2023년 2월 27일
0

🟠트랜잭션(Transaction)

  • 데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업 단위

    데이터베이스의 상태 변화
    👉 SQL질의어(SELECT, INSERT, DELETE, UPDATE)를 이용해 데이터베이스에 접근하는 것

    작업 단위
    👉 한꺼번에 모두 수행되어야 하는 일련의 연산들(정하기 나름이다)

    계좌 송금의 경우 A의 계좌에서 돈이 나가는 것과 B의 계좌에 돈이 들어오는 것은 한꺼번에 수행되어야 하므로 하나의 작업 단위 즉, 트랜잭션에 포함되어야 한다.


🟠트랜잭션에 필요한 연산

  • Commit 연산
    하나의 트랜잭션이 완수되어 데이터베이스가 일관성 있는 상태에 있음을 의미한다

    A계좌에서 돈이 나가는 것, B의 계좌에 돈이 들어오는 것 모두 성공적으로 수행된 상태

  • Rollback 연산
    하나의 트랜잭션 내 비정상적으로 종료된 작업이 있어 트랜잭션의 원자성이 깨진 상태.
    해당 트랜잭션이 수행한 모든 연산을 재시작하거나 취소한다.

    A계좌에서 돈이 나가는 것은 성공적으로 수행되었으나, B계좌에 돈이 들어오지 않았을 경우 A계좌에서 돈이 나간 작업을 다시 되돌린다.


🟠트랜잭션의 상태

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

🟠트랜잭션이 가져야 하는 특징(ACID)

1. 원자성(Atomicity)
트랜잭션 내의 모든 명령은 완벽하게 수행되어야 한다.
어느 하나라도 오류 발생 시, 해당 트랜잭션은 모두 취소된다.
따라서 트랜잭션의 연산이 모두 반영되어 Commit되거나 하나도 반영되지 않게 Rollback되어야 한다.


2. 일관성(Consistency)
트랜잭션의 작업 처리 결과는 항상 일관성 있어야 한다.


3. 독립성, 격리성(Isolation)
하나의 트랜잭션이 수행 중일 때는 다른 트랜잭션 연산에 끼어들 수 없고, 다른 트랜잭션 의 수행 결과를 참조할 수도 없다.


4. 영속성, 지속성(Durability)
성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.




참고
https://cocoon1787.tistory.com/808

profile
IT'S YOUR VICTORY

0개의 댓글

관련 채용 정보