transaction

97woo·2022년 3월 20일
0

오늘은 transaction에 대해서 공부하고 정리해보도록 하겠습니다.

transaction 이란??

트랜잭션은 데이터베이스의 상태를 변환시킬떄 하나의 논리적 기능을 수행하기 위한
작업의 단위 또는 한꺼번에 실행,수행 되어야 할 연산들을 말합니다.

transaction 성질

ACID
Automicity,Consistency,Isolation,Durability
4가지의 성질 또는 특성이 있는대요 하나하나 알아가 봅시다.

1. Atomicity(원자성)

(1) 트랜잭션의 연산은 데이터베이스에 모두 반영되거나 모두 반영되지않아야한다.
쉽게 말해서 all or rollback을 의미합니다.

(2) 트랙잭션의 모든 명령은 반드시 수행되어야하고 모든것이 완벽히 수행되지않을 경우 오류가 발생하면 모두 취소 되어야 합니다.

따라서 재대로 수행되지않으면 트랙잭션 전체를 취소하여 수행 이전으로 돌아가야 합니다.

2.Cosistency(일관성)

트랙잭션이 완료되었을떄에 이전 상황과 동일하게 데이터의 일관성이 있어야 합니다.
데이터의 모순이 있으면 안됩니다.

이해를 돕기위해 예시를 하나들어보겠습니다.
저는 계좌에 10000원 있고 친구는 계좌에 15000이 있을떄 친구에게 10000원을 송금한다고 가정하겠습니다 이때 친구와 저의 계좌 합은 25000원입니다. 만약 입금시 친구의 계좌 잔액이 25000원을 넘는다면 데이터의 합에서 모순이 생겨 일관성을 잃게 되는 상황입니다
이런 상황을 일관성이 없다고 말합니다. 당연히 친구 계좌에는 25000이 있어야합니다.
다른 상황으로는 제 계좌에 돈이 0원일경우 송금이 실행 되지 않아야하는것
돈이 없는데 송금이 되는 경우는 말이 안되겠죠???

3.Isolation(고립성)

트랜잭션이 다른 트랜잭션에 간섭을 주거나 받지않고 독립적으로 수행되어야합니다.
두 개의 트랙잭션이 병행 실행되는 경우 현재 수행중인 트랜잭션이 완료되기전에 다른 트랜잭션이 실행되고 있는 트랜잭션을 방해하거나 접근하면 안됩니다.

만약 제 잔고에 10000원이 있다고 가정해봅시다. 친구a에게 10000원을 송금하려는 동시에
7000원을 인출하려고 할떄 고립성이 적용되지 않는다면 db에 10000이 인출되려는 데이터가 저장되기도 전에 10000을 입금하고 7000원을 인출하는 말도 안되는 일이 발생하겠죠??
반드시 트랜잭션은 독립적으로 수행되어야합니다.

4.Durability(영속성)

트랜잭션의 성공결과는 장애 발생 후에도 변함없이 보관되어야 합니다.
트랜잭션이 정상적으로 완료되었을때에는 db에 확실히 기록이 되어야합니다.

DBMS가 책임지고 데이터베이스에 기록하는 성질을 트랜잭션의 Durability(영속성)이라고 합니다.

다음시간에는 트랜잭션을 장고에서 적용해보도록 하겠습니다.

profile
한 발씩 나아가는중

0개의 댓글