Database Transaction이란?

이우길·2022년 6월 10일
1

database

목록 보기
1/2
post-thumbnail

Database의 Transaction이란?

Goal

  • Transaction 대한 이해

Transaction이란?

트랜잭션이란 질의(query)를 하나의 묶음 처리하는 하나의 작업수행의 논리적 단위이다. DB의 트랜잭션의 내용은 스크립트 형태로 되어있다. 즉 절차적이라고 할 수 있다.

START

query 1
query 2
query 3
query 4
...

END

시작과 끝이 존재하고 시작부터 끝까지를 단위화하여 생성된 논리블럭이 실행되었을 때 논리블럭이 온전히 실행되어야 한다.(시작 부터 끝까지 전부 실행성공) 하지만 질의가 단 하나라도 실행이 실패하게 된다면 논리블럭이 시작하기 이전 시점으로 돌려야 한다.


Transaction의 특성

Transaction의 특성을 이야기할 때 ACID특성이라 하며 간단히 살펴보면 아래와 같다.

  1. 원자성(Atomicity)

    • 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장한다.
    • All or Nothing의 개념으로서 작업 단위를 일부분만 실행하지 않는다는 것을 의미한다.
  2. 일관성(Consistency)

    • 트랜잭션이 성공적으로 완료되면 일관적인 DB상태를 유지하는 것을 말한다.
  3. 격리성(Isolation)

    • 트랜잭션 수행 시 다른 트랜잭션의 작업이 끼어들지 못하도록 보장하는 것을 말한다.
  4. 지속성 (Durability)

    • 성송적으로 수행된 트랜잭션을 영원히 반영되는 것을 말하며 commit를 하면 현재 상태는 영원히 보장된다.

트랜잭션의 흐름

트랜잭션이 실행되어 영속화 되어 있는 데이터를 변경하려고 할 때 바로 적용되는 것이 아니다.


위에 있는 그림을 보며 설명하자면 개발자가 Insert, Update, Delete등의 데이터 변경 Query를 트랜잭션 단위에서 실행하였을 때 변경의 대상을 메모리 상으로 clone을 한다.

이 후 변경 사항을 메모리 상에 clone 된 Data에 적용을 한 후 변경한 후 변경 사항을 가지고 있다가 commit이 되면 그 때 DB에 변경사항이 적용 되는 것이다.

만약 트랜잭션이 실행되는 도중 Error가 발생하게 되면 메모리에 있던 변경사항을 메모리에서 지우는데 이 행위를 Rollback이라고 한다.

profile
leewoooo

0개의 댓글