본문 바로가기
Develop/Database

[Database] 트랜잭션이란 뭘까?

by 코딩의성지 2021. 8. 7.

오늘은 트랜잭션에 대해 정리를 해두려한다.

 

트랜잭션(Transaction)이란?

트랜잭션(Transaction)의 정의를 내려보자면, 트랜잭션은 Database의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업 단위나 한번에 수행되어야할 일련의 연산을 의미한다.

 

트랜잭션(Transaction)의 특징

트랜잭션의 특징으로는

첫째, Database 시스템에서 병행제어 및 회복 작업이 수행될 때 처리 되는 작업의 논리적 단위 이며,

둘째, 사용자가 어떠한 시스템에 서비스를 요청할 때 시스템이 응답하기 위한 상태 변환 과정의 작업단위 이고,

셋째, 각 트랜잭션은 Commit 혹은 Rollback 되어야 한다.

 

여기서 Commit 연산은 하나의 논리적인 단위인 트랜잭션에 대한 작업이 성공적으로 끝났으며, Database가 일관된 상태로 있을때 트랜잭션이 정상적으로 연산이 완료되었다는 것을 알려주는 것이고,

Rollback 연산은 하나의 트랜잭션 처리가 오류등으로 비정상적으로 종료되서 database의 일관성을 깨트릴 경우에, 이 트랜잭션의 일부가 정상적으로 처리되었더라도 트랜잭션의 원자성을 보장하기 위해 모든 연산을 취소하는 것이다. 이후 취소된 연산을 재시작할 수도 있고, 폐기할 수도 있다.

 

트랜잭션(Transaction)의 4가지 성질

트랜잭션의 성질은 ACID 라고 하는 4가지 성질을 가진다.

 

1. Atomicity (원자성)

트랜잭션의 연산은 Database에 모두 반영이 되든(Commit) 전혀 반영이 안되든(Rollback) 해야한다. 트랜잭션 안에서의 모든 명령은 완벽하게 수행되어야하고, 만약에 이 과정에서 작은 오류라도 발생하면 트랜잭션은 전부 작업이 취소되어야한다.

 

2. Consistency (일관성)

트랜잭션은 실행이 성공적으로 완료되면 항상 일관성 있는 상태로 변환되어야한다. 그리고 시스템이 가지고 있는 고정적인 요소는 트랜잭션 수행 전,후의 상태가 같아야한다.

 

3. Isolation (격리성)

어떤 트랜잭션이 실행되고 있을때 다른 트랜잭션의 연산이 끼어들 수는 없다. 그리고 다른 트랜잭션이 수행중인 트랜잭션의 결과를 참조하기 위해서는 수행중인 트랜잭션이 완전히 완료될 대 까지 기다려야한다.

 

4. Durability (지속성, 영속성)

성공적으로  완료된 트랜잭션은 시스템이 고장나도 영구적으로 반영되어 있어야한다.

 

트랜잭션(Transaction)의 상태

 

 

- Active : 트랜잭션이 활동 즉 실행 중인 상태

- Partially Committed 트랜잭션이 연산이 끝나고, Commit 이 실행되기 직전의 상태

- Committed : 트랜잭션이 성공적으로 종료되고 Commit연산을 수행한 후의 상태

- Failed : 트랜잭션 실행시 오류 발생으로 인해 트랜잭션이 중단된 상태

- Aborted : 트랜잭션 비정상 종료 후 Rollback 연산 수행한 상태

반응형

댓글