Transaction

박찬효·2022년 9월 29일
0

Transaction이란?

Transaction이란 데이터베이스의 상태를 변환 시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미합니다.

Transaction의 특징

이미지 출처

원자성

  • Transaction의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 합니다.

  • 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 전부 취소가 되어야 합니다.

일관성

  • Transaction이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환합니다.

  • 시스템이 가지고 있는 고정 요소는 Transaction 수행전과 수행 완료 후의 상태가 같아야 합니다.

독립성

  • 둘 이상의 Transaction이 동시에 병행 실행되는 경우 하나의 Transaction 실행중에 다른 Transaction의 연산이 끼어들 수 없습니다.

  • 수행중인 Transaction은 완전히 완료될 때까지 다른 Transaction에서 수행 결과를 참조할 수 없습니다.

지속성

  • 성공적으로 완료된 Transaction의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 합니다.

  • 보통 commit이 된다면 지속성은 만족할 수 있습니다.

Transaction 연산 및 상태

commit 연산

  • Commit 연산은 한개의 논리적 단위에 대한 작업이 성공적으로 끝났고, 데이터베이스가 다시 일관된 상태에 있을 때, 이 Transaction이 행한 갱신 연산이 완료된 것을 Transaction 관리자에게 알려주는 연산입니다.

Rollback 연산

  • Rollback 연산은 하나의 Transaction 처리가 비정상적으로 종료되어 데이터베이스의 일관성을 깨뜨렸을 때, 이 Transaction의 일부가 정상적으로 처리되었더라도 Transaction의 원자성을 구현하기 위해 Transaction이 행한 모든 연산을 취소하는 연산입니다.

  • Rollback시에는 해당 Transaction을 재시작하거나 폐기합니다.

Transaction의 상태

이미지출처

  1. Active

    • Transaction이 실행중인 상태입니다.
  2. Failed

    • Transaction 실행에 오류가 발생하여 중단된 상태입니다.
  3. Aborted

    • Transaction이 비정상적으로 종료되어 Rollback 연산을 수행한 상태입니다.
  4. Partially Committed

    • Transaction의 마지막 연산까지 실행했지만, Commit 연산이 실행 되기 직전의 상태입니다.
  5. committed

    • Transaction이 성공적으로 종료되어 Commit 연산을 실행한 후의 상태입니다.
profile
개발자가 되기 위한 1인

0개의 댓글