Transation이란? 특징(ACID)

won·2023년 1월 16일
0

Transaction은 SELECT, UPDATE, INSERT, DELETE와 같은 연산을 수행하여 데이터베이스의 상태를 변화시키는 작업의 단위다.


트랜잭션의 특징(ACID)

Atomicity(원자성)

트랜잭션이 데이터베이스에 모두 반영되던지, 아니면 전혀 반영 되지 않아야 한다.
트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 한다.

Consistency(일관성)

트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다.
시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 수행 완료 후의 상태가 같아야 한다.

Isolation(독립성)

둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 어떤 하나의 트랜잭션이라도 다른 트랜잭션의 연산에 끼어들수 없다.
수행 중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조 할 수 없다.

Durability(지속성)

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


트랜잭션 상태

트랜잭션은 논리적으로 5가지의 상태에 있을 수 있다.
1. Active : 트랜잭션이 현재 실행 중인 상태.
2. Failed : 트랜잭션이 실행되다 오류가 발생해서 중단된 상태.
3. Aborted : 트랜잭션이 비정상 종료되어 Rollback이 수행된 상태.
4. Partially Commited : 트랜잭션의 연산이 마지막까지 실행되고 Commit이 되기 직전 상태.
5. Committed : 트랜잭션이 성공적으로 종료되어 Commit연산을 실행 한 후의 상태


트랜잭션의 Commit과 Rollback

Commit

commit연산은 하나의 트랜잭션이 성공적으로 끝나고 데이터베이스가 일관성 있는 상태에 있을 때 하나의 트랜잭션이 끝났음을 알려주기 위해 사용되는 연산.

Rollback

Rollback은 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성을 깨뜨렸을때 트랜잭션의 일부가 정상적으로 처리되었더라도 트랜잭션의 원자성을 구현하기 위해 이 트랜잭션이 행한 모든 연산을 취소하는 (Undo)연산이다.

profile
어찌저찌 굴러가는 개발자

0개의 댓글