본문 바로가기

CS/DB

Transaction ( 트랜잭션 )

데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위

 

 

상태 변화란 SQL질의어를 통해 DB에 접근하는 것을 말한다.

( SELECT, INSERT, DELETE, UPDATE )

 

작업 단위란 많은 SQL 명령문들을 사람이 정하는 기준에 따라 정하는 것이다.

작업단위를 정의하는 것.

 

더보기

예시) 사용자 A가 사용자 B에게 만원을 송금한다.

이때 DB 작업 

1. 사용자 A의 계좌에서 만원을 차감한다 : UPDATE 문을 사용해 사용자 A의 잔고를 변경 

2. 사용자 B의 계좌에 만원을 추가한다 : UPDATE 문을 사용해 사용자 B의 잔고를 변경

 

현재 작업 단위 : 출금 UPDATE문 + 입금 UPDATE문 → 이를 통틀어 하나의 트랜잭션이라고 한다.

- 위 두 쿼리문 모두 성공적으로 완료되어야만 "하나의 작업(트랜잭션)"이 완료되는 것이다. 'Commit'

- 작업 단위에 속하는 쿼리 중 하나라도 실패하면 모든 쿼리문을 취소하고 이전 상태로 돌려놓아야한다. `Rollback`

 

 

하나의 트랜잭션 설계를 잘 만드는 것이 데이터를 다룰 때 많은 이점을 가져다줄 수 있다.

 

특징

1. 원자성 ( Atomicity )

트랜잭션이 DB에 모두 반영되거나, 혹은 전혀 반영되지 않아야 한다.

 

2. 일관성 ( Consistency )

트랜잭션의 작업 처리 결과는 항상 일관성 있어야 한다.

 

3. 독립성 ( Isolation )

둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때, 어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없다.

 

4. 지속성 ( Durability )

트랜잭션이 성공적으로 완료되었으면, 결과는 영구적으로 반영되어야 한다.

 

Commit

하나의 트랜잭션이 성공적으로 끝났고, DB가 일관성있는 상태일 때, 이를 알려주기 위해 사용하는 연산이다.

 

Rollback

하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션 원자성이 깨진 경우

 

 

Transaction 관리를 위한 DBMS 전략

 

'CS > DB' 카테고리의 다른 글

Index ( 인덱스 )  (0) 2021.04.18
SQL vs NoSQL  (0) 2021.04.15
Join  (0) 2021.04.15
Key  (0) 2021.04.15
UML ( Unified Modeling Language )  (0) 2021.04.14