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 |