Java

[Java] 트랜잭션(transaction)에 대해서

다시초심으로 2024. 1. 16. 15:21

1.트랜잭션이란?

트랜잭션이란 데이베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위를 설명한다.

A가 B에게 만원을 보낸다고 가정한다. 우선 A의 통장에서 만원을 출금하고, B의 통장에 만원을 입금한다.
그 순간, 출금과 입금을 합쳐서 "송금"이라고 하나의 논리적 기능을 이루는 것이다.

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

1.원자성(Atomicity)

  • 트랜잭션은 데이터베이스에 모두 반영되거나 전혀 반영되지 않아야한다.
  • 예) 송금 과정에서 A에게서 만원을 출금했지만, B에게 만원을 입금하지 않는 경우가 발생하면 안된다.

2.일관성(Consistency)

  • 트랜잭션이 성공적으로 완료되면 일관적인 데이터를 유지한다.
  • 예) 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야한다.

3.독립성(Isolation)

  • 둘 이상의 트랜잭션이 동시에 실행되는 경우 각 트랜잭션은 서로의 연산에 끼어들 수 없다.
  • 예) 동시에 같은 데이터를 수정하지 못하도록 해야한다.

4.영구성,지속성(Durability)

  • 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영(기록)되어야 한다.

 


3.트랜잭션의 연산 (Rollback, Commit)

1. 롤백(Rollback)

  • 트랜잭션 작업 도중 오류가 발생하면 트랜잭션 처리를 시작하기 이전의 상태로 돌아간다.
  • 송금 중 A에게 만원을 출금한 후, B에게 만원을 입금하는 과정에서 오류가 발생했다면,
    A에게 만원을 출금하기 전 단계로 되돌린다..

2. 커밋(Commit)

  • 트랜잭션 작업을 성공적으로 마치고 데이터베이스에 영구적으로 반영한다.


4.트랜잭션의 상태 

트랜잭션의 연산을 수행할때, 5가지의 상태가 존재한다.

1.활성화(Active) : 트랜잭션이 작업을 시작하여 실행 중인 상태

2.실패(Failed) : 트랜잭션에 오류가 발생하여 실행이 중단된 상태

3.철회(Aborted): 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행한 상태

4.부분완료(Partially commited) : 트랜잭션의 마지막 연산까지 실행하고 commit 요청이 들어온 직후의 상태.
최종 결과를 데이터베이스에 아직 반영하지 않은 상태

5.완료(Commited) : 트랜잭션이 성공적으로 종료되어 commit 연산을 실행한 후의 상태

'Java' 카테고리의 다른 글

Java 상속(inheritance)  (0) 2024.01.24
형변환(캐스팅,casting)이란?  (0) 2024.01.19
JVM(Java Virtual Machine) 이란?  (0) 2024.01.17
자바 특징 정리  (0) 2024.01.17
싱글톤 패턴(Singleton Pattern)  (0) 2024.01.15