BottleH Blog

트랜잭션(Transaction)과 트랜잭션의 특성(ACID)

    Tags

  • DB
트랜잭션(Transaction)과 트랜잭션의 특성(ACID) thumbnail

트랜잭션(Transaction)과 트랜잭션의 특성(ACID)

학습조직을 진행하던 중, DB isolation level에 대해 알게 되었다. 하지만 DB isolation level에 대해 공부하기 전에!! ✔트랜잭션에 대해 명확히 알고자 정리해보았다.

1. 트랜잭션이란?

  1. 트랜잭션(Transaction)이란, 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위를 뜻한다.

    • 작업단위: 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미한다.
  2. 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다.

  3. 하나의 트랜잭션은 Commit되거나 Rollback된다.

    • Commit: 하나의 트랜잭션이 성공적으로 끝났고, 데이터베이스가 일관성있는 상태에 있을 때, 트랜잭션이 종료됨을 알려주기위해 사용하는 연산
      • 수행했던 트랜잭션이 로그에 영구저장
    • Rollback: 하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션의 원자성이 깨진경우, 트랜잭션을 처음부터 다시 시작하거나, 트랜잭션의 부분적으로만 연산된 결과를 다시 취소시키는 연산이다.
      • 이전 Commit한 곳까지만 복구한다.

2. 트랜잭션의 특성(ACID)

  • 원자성 (Atomicity)

    • 트랜잭션은 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다
    • 부분적으로 실행되다가 중단되지 않는 것을 보장하는 것
  • 일관성 (Consistency)

    • 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지해야 한다.
  • 독립성 (Isolation)

    • 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연산에 끼어들 수 없다.
    • 하나의 특정 트랜잭션이 완료될때까지, 다른 트랜잭션이 특정 트랜잭션의 결과를 참조할 수 없다.
  • 지속성 (Durability)

    • 트랜잭션이 성공적으로 완료됬을 경우, 결과는 영구적으로 반영되어야 한다는 점이다.
Written by@BottleH
Back-End Developer

GitHub