목차
트랜잭션 개요
트랜잭션이란, 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위를 뜻 합니다.
데이터베이스의 상태를 변화시킨다는 것은 아래의 질의어(SQL)을 통해 데이터베이스로 접근 하는 것을 의미합니다.
- SELECT
- INSERT
- DELETE
- UPDATE
작업의 단위는 질의어 한문장이 아니라는 것을 명심해야 합니다.
작업단위는 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미합니다.
(예를 들어, 게시판 글을 작성하면 게시판으로 가는 기능은 INSERT와 SELECT가 합친 SQL입니다. 이러한 작업단위를 하나의 트랜잭션이라 합니다.)
트랜잭션 설계를 잘하는 것이 데이터를 다루는 것에 많은 이점을 줍니다.
트랜잭션 특징
트랜잭션의 특징은 크게 4가지가 있습니다.
- 원자성(Atomicity)
- 일관성(Consistency)
- 독립성(Isolation)
- 지속성(Durability)
원자성
원자성은 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다는 것 입니다. (All or Nothing)
트랜잭션은 사람이 설계한 논리적인 단위로서, 일처리는 작업단위 별로 이루어져야 사람이 다루는데 용이합니다. 만약 트랜잭션 단위로 데이터가 처리되지 않는다면, 설계한 사람은 데이터 처리 시스템을 이해하기 힘들뿐 아니라, 오작동 시 원인을 찾기 매우 힘들어집니다.
일관성
일관성은 트랜잭션 작업처리 결과가 항상 일관성이 있어야 한다는 것 입니다.
트랜잭션이 진행하는 동안 데이터베이스가 변경되더라도 업데이트된 데이터베이스로 트랜잭션이 진행되는 것이 아니라, 처음에 트랜잭션을 진행하기 위해 참조한 데이터베이스로 진행됩니다. 이렇게 함으로써 각 사용자는 일관성 있는 데이터를 볼 수 있습니다.
독립성
독립성은 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연산에 끼어들 수 없다는 것 입니다.
하나의 특정 트랜잭션이 완료될 때까지, 다른 트랜잭션이 특정 트랜잭션의 결과를 참조할 수 없습니다.
지속성
지속성은 트랜잭션이 성공적으로 완료됬을 경우, 그 결과는 영구적으로 반영되어야 하는 것 입니다. 보통 commit이 되면 지속성은 만족할 수 있습니다.
트랜잭션의 커밋(Commit)과 롤백(Rollback)
커밋(Commit)
커밋이란 하나의 트랜잭션이 성공적으로 끝나서 데이터베이스가 일관성 있는 상태에 있음을 의미하는 연산입니다.
이 연산을 사용하면 수행했던 트랜잭션이 로그에 저장되어, 후에 Rollback 연산을 수행했었던 단위로 돌아가게 합니다.
롤백(Rollback)
롤백이란 트랜잭션 처리가 비정상적으로 종료된 상태를 의미합니다. (원자성이 깨질 때 등)
롤백이 이뤄지면 트랜잭션을 다시 실행하거나 부분적으로 변경된 결과를 취소할 수 있습니다.
트랜잭션의 상태
트랜잭션은 논리적으로 5가지 상태에 있을 수 있습니다.
Active
트랜잭션이 현재 실행 중인 상태
Failed
트랜잭션이 실행 되다 오류가 발생해 중단된 상태
Aborted
트랜잭션이 비정상 종료되어 롤백이 수행된 상태
Partially Committed
트랜잭션의 연산이 마지막까지 실행되고 커밋 되기 직전 상태
Committed
트랜잭션이 성공적으로 종료되어 커밋 연산을 실행한 후의 상태
참조
트랜잭션(Transaction)이란?
트랜잭션이란? 트랜잭션(Transaction 이하 트랜잭션)이란, 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위를 뜻한다. 데이터베이스의 상태를 변화시킨다는 것은 무얼 의미하는 것일
mommoo.tistory.com
[데이터베이스] Transaction, 트랜잭션이란?
Transaction, 트랜잭션 트랜잭션(Transaction) 이란, 데이터베이스의 상태를 변경시키기 위해 수행하는 작업 단위이다. 데이터베이스의 상태를 변경시킨다는 이야기는 SELECT, UPDATE, INSERT, DELETE 와 같은
wonit.tistory.com