[DB]트랜잭션(Transaction)

박민하·2022년 9월 26일
0

CS

목록 보기
4/4

트랜잭션의 필요성?

  트랜잭션은 쪼갤수 없는 최소 업무 처리 단위를 말한다. 데이터베이스에서의 트랜젝션이란 하나의 작업단위를 나타낸다.

  트랜잭션의 중요성은 데이터 동시 접근의 문제에서 발견할 수 있다. 위 사진을 예를 들어 A지점과 B지점에서 동시에 계좌 잔액 500원을 확인하고 100원을 인출했다고 하자. 두 지점 모두 남은 잔액을 400원으로 저장해서 최종 잔액은 300원이 아닌 400원으로 저장됐다. 이는 한 작업이 다른 작업에 영향을 받은 결과이다.

  위와 같은 일을 방지하기 위해 데이터베이스는 작업의 단위를 트랜잭션으로 정의한다.

트랜잭션의 특징

  트랜잭션은 다수의 연산으로 구성된 트랜잭션이 사용자에게 단일작업처럼 다뤄지도록 ACID 특징을 준수한다.

1. 원자성(atomicity)

  • 하나의 트랜잭션에 포함된 모든 연산은 완전히 수행되거나 전혀 수행되지 않는다.
  • All or Noting

    ex) 출금 과정에서 하나라도 문제가 된다면 송금이 이루어지지 않는다.
    만약 원자성이 지켜지지 않는다면 돈은 빠져나가고 통장 잔고는 그대로인 상황이 발생할 수 있다.

2. 일관성(consistency)

  • 특정 트랜잭션이 수행되기 전과 후에 데이터베이스가 일관된 상태를 유지한다.

    ex) A계좌에서 B계좌로 이체를 할 때, 두 계좌 잔액의 합은 이체 전 후와 같아야 한다.
    위의 사진처럼 500원에서 200원을 출금했는데 400원이 되어버린 상황은 일관성이 무너진 상황이다.

3. 고립성(isolation)

  • 특정 트랜잭션이 데이터베이스를 갱신하는 동안 다른 트랜잭션에 의해 방해받지 않는다.

    ex) 하나의 트랜잭션이 A계좌에서 작업중이라면 다른 트랙잭션은 이를 방해하지 못하고 대기해야 한다.

4. 지속성(durability)

  • 완료된 트랜잭션의 결과는 어떠한 시스템의 장애에도 데이터베이스에 반영되어있어야 한다.
  • 주기억장치 내용이 날아가도 보조기억장치에 기록된 로그로 복원이 가능해야 한다.

[참고 사이트]

[DataBase] 트랜잭션이란? (Transaction)
트랜잭션 개요
트랜잭션 처리

profile
backend developer 🐌

0개의 댓글