트랜잭션(Transaction)

몽슈뜨·2023년 1월 6일
1

TIL

목록 보기
32/70
post-thumbnail

📖 트랜잭션(Transaction)이란?
데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위

여기서 데이터베이스의 상태를 변화시킨다는 의미는 질의어(SQL : SELECT, INSERT, DELETE, UPDATE)를 이용하여 데이터베이스에 접근하는 것을 의미합니다. 그리고 작업 단위는 사람이 정하는 기준에 따라 한꺼번에 모두 수행되어야 할 일련의 연산들을 뜻합니다. 이러한 작업 단위를 일종의 작업의 흐름으로도 볼 수 있습니다.

은행에서 돈을 이체하는 작업을 예시로 들자면

A은행에서 B은행으로 돈을 계좌 이체하려고 함
송금 중 알 수 없는 오류로 A은행에서 돈은 빠져나갔지만 B은행의 계좌에는 입금되지 않음
이러한 상황을 막기 위해 거래가 모두 끝나야 완전한 거래로 승인(Commit)하고, 거래 도중 오류가 발생했을 시 거래를 시작하기 전으로 되돌려야 합니다(Rollback).

위에서의 은행업무를 하나의 작업 단위, 트랜잭션으로 볼 수 있으며 이러한 트랜잭션을 통해 데이터베이스의 안정성을 확보할 수 있게 됩니다.

🛠️ 트랜잭션의 Commit과 Rollback
1) Commit 연산

하나의 트랜잭션이 성공적으로 끝나서 데이터베이스가 일관성 있는 상태에 있음을 의미

2) Rollback 연산

하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션의 원자성이 깨진 상태를 의미.
트랜잭션의 원자성을 지키기 위해 해당 트랜잭션이 행한 모든 연산을 재시작하거나 취소(Undo)함

📝 트랜잭션 성질
데이터의 무결성(Interity)을 보장하기 위해 DBMS의 트랜잭션이 가져야 할 특징.
각 특성의 첫 글자를 따서 ACID 특성이라고 합니다.

1) Atomicity(원자성)

트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 함(부분적으로 실행되거나 중단되지 않는 것을 보장)
어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 함
트랜잭션의 연산은 모두 반영되도록 Commit 되거나 전혀 반영되지 않도록 Rollback 되어야 함
2) Consistency(일관성)

트랜잭션의 작업 처리 결과는 항상 일관성이 있어야 함
3) Isolation(독립성, 격리성)

트랜잭션 수행 시 다른 트랜잭션 연산에 끼어들지 못하도록 보장
수행 중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서의 수행 결과를 참조할 수 없음
4) Durability(영속성, 지속성)

성공적으로 완료된 트랜잭션의 결과는 시스템이 고장 나더라도 영구적으로 반영되어야 함

🩺 트랜잭션 상태

활동(Active) : 트랜잭션이 실행 중인 상태
실패(Failed) : 트랜잭션 실행에 오류가 발생하여 중단된 상태
철회(Aborted) : 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행한 상태
부분 완료(Partially Committed) : 트랜잭션의 마지막 연산까지 실행했지만, Commit 연산이 실행되기 직전의 상태
완료(Committed) : 트랜잭션이 성공적으로 종료되어 Commit 연산을 실행한 후의 상태

✒️ 요약
트랜잭션은!

데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위
사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위
Commit 되거나 Rollback 되거나 둘 중 하나

profile
개발자되면 맥북사줄께

1개의 댓글

comment-user-thumbnail
2023년 1월 6일

좋습니다

답글 달기