본문 바로가기

Database

데이터베이스의 트랜잭션(Database Transaction)

트랜잭션이란?(Transaction)

처음부터 끝까지 아무 이상없이 모든 작업이 끝나야만 성공하는 작업이 있다.

예를들어 카페에서 음료를 살 때의 상황을 예로 들어보자면

  1. 카페에서 주문을 할 수 있는 차례가 될 때 까지 기다린다.
  2. 메뉴를 선택한다.
  3. 직원에게 돈을 지불한다.
  4. 주문 완료

위의 4가지의 과정을 모두 마쳐야한다. 만약 여기서 한 과정이라도 빠지게 되면 정상적으로 주문을 했다고 볼 수 없다. 이처럼 한꺼번에 실행되어야하는 일련의 과정트랜잭션이라고 한다.

모두 완료하면 COMMIT, 하나가 실패하면 취소되는 ROLLBACK이라고 한다.

COMMIT한 경우에는 작업 결과가 데이터베이스에 반영이 된다.

ROLLBACK한 경우에는 작업이 모두 취소되어 데이터베이스에 영향을 끼치지 않는다.

트랜잭션의 성질

트랜잭션에는 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability).

4가지의 성질이 있다. 앞글자를 따서 ACID 특성이라고 한다.

그림은 예시를 이해하기 위해 첨부하였다.

1) 원자성(Atomicity)

  • 트랜잭션의 작업들을 뗄 수 없고, 무조건 완료(COMMIT)되거나 취소(ROLLBACK)되어야 한다.
  • 즉, 작업은 부분만 실행될 수 없다.

2) 일관성(Consistency)

  • 트랜잭션이 성공적으로 완료되면 DB의 상태도 일관 되는 것이다.
  • 예시를 보면 계산 전(정수)과 후(정수)의 데이터 타입이 일치한다.
  • 만약 계산 전의 금액의 데이터 타입은 정수형인데, 계산 후의 금액이 문자열이 되면 일관성에 어긋나는 것이다.

3) 격리성(Isolation)

  • 트랜잭션을 수행하는 도중에 다른 트랜잭션이 끼어들거나 간섭할 수 없는 것이다. 각각의 트랜잭션은 격리되어있다.
  • 예시는 주문하는 트랜잭션이 실행 중인 상태에서 주문 취소 트랜잭션이 끼어들지 못하는 것이다.

4) 지속성(Durability)

  • 성공적으로 COMMIT된 트랜잭션은 영구적으로 반영이 된다.

참고 문헌

[DB이론] 트랜잭션(transaction)과 ACID 특성

[DB용어] 트랜잭션( transaction ) 이란 ?

 

'Database' 카테고리의 다른 글

무한 스크롤링을 이용하여 성능 개선하기  (1) 2021.01.31