728x90
Transaction의 성질 - ACID
트랜잭션이란?
- 하나의 논리적 작업 단위를 구성하는 일련의 연산들의 집합
- 예를 들어 계좌이체를 했을 경우 A 계좌에서 10만원을 인출하고 B 계좌에서 10만원을 입금되었을 경우 A 계좌 인출 시 문제가 생겼을 경우 원래 상태(B 계좌에 입금이 되면 안된다.)로 돌아가야 하고 B 계좌 입금시 문제가 생겼을 경우 원래 상태(A 계좌로 인출이 되면 안된다.)로 돌아가야 한다.
- 이러한 트랜잭션은 다양한 데이터 항목들을 접근하고 갱신하는 프로그램의 수행 단위가 된다.
- 트랜잭션은 아래의 ACID 성질이라고 하는 것으로 설명된다.
트랜잭션의 성질
- 트랜잭션이 안전하게 수행되는 것을 보장하기 위한 성질
A - Atomicity(원자성)
- All or Notihng
- 모든 트랜잭션 연산들이 정상적으로 수행 완료가 되거나 아니면 전혀 어떠한 연산도 수행해서는 안된다.
- 즉, 완료되지 않은 트랜잭션의 중간 상태를 DB에 반영되면 안되고 완료된 트랜잭션은 모두 반영되어야 한다는 것이다.
C - Consistency (일관성)
- 트랜잭션 작업 처리 결과는 항상 일관성이 있어야 한다.
- 즉, 성공적으로 수행된 트랜잭션은 정당한 데이터들만 데이터베이스에 반영해야 한다.
- 기본키, 외래 키 제약 같은 명시적인 무결성 제약 조건뿐만 아니라 아까의 계좌이체 예제에서 A와 B 계좌의 잔고 합이 트랜잭션 전과 후가 같아야 한다는 비명시적 일관성 조건도 있다.
I - Isolation (독립성)
- 둘 이상의 트랜잭션이 동시에 실행되고 있다 해도 각각의 트랜잭션은 다른 트랜잭션의 수행에 영향을 받지 않고 독립적으로 실행해야 한다.
- 즉, 서로의 간섭없이 독립적으로 이루어져야 한다는 의미이다.
- 이 독립성을 보장할 수 있는 가장 좋은 방법은 순차적으로 수행하는 것(비동시성)인데, 병렬 처리(동시성)의 장점을 얻기 위해 격리레벨, 전파 옵션을 이용해 독립적은 최소한으로 보장하고 성능은 최대한 가져오는 방법을 제공한다.
D - Durablity (지속성)
- 트랜잭션이 정상적으로 성공되어 커밋이 되면 해당 트랜잭션에 대한 모든 변경은 영구적으로 반영되어야 한다.
참고자료
728x90
728x90
'Backend > DataBase' 카테고리의 다른 글
SQL의 DDL, DML, DCL, TCL (0) | 2021.01.12 |
---|---|
🤔 CASE WHEN ~ THEN ~ ELSE END (0) | 2021.01.11 |
ORACLE, MYSQL 날짜에서 각 값들을 추출하기 🧐 (0) | 2021.01.07 |
개념 모델 vs 논리모델 vs 물리모델 (0) | 2020.10.30 |
NoSQL vs RDBMS (0) | 2020.08.19 |