Transaction(트랜잭션)

2021. 8. 17. 23:09DataBase

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

데이터베이스의 상태를 변화시킨다? - "SELECT, INSERT, DELETE, UPDATE" 질의어(SQL)를 이용하여 데이터베이스에 접근하는것을 의미

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

트랜잭션의 특징

  • 원자성(Atomicity): 트랜잭션이 데이터베이스에 모두 반영되던가 아니면 전혀 반영되지 않는다.
  • 일관성(Consistency): 튼랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다.
  • 독립성(Isolation): 둘 이상의 트랜잭션이 동시에 실행중일때, 어떤 하나의 트랜잭션이라도 다른 트랜잭션 연산에 끼어들 수 없다(참조할 수 없다). 
  • 지속성(Durability): 트랜잭션이 성공적으로 완료되었을 경우, 그 결과는 영구적으로 반영되어야 한다. 

트랜잭션의 Commit 연산, Rollback연산

 

Commit 연산:

상태: 하나의 트랜잭션이 성공적으로 끝났고, 데이터베이스가 일관성있는 상태

역할: 하나의 트랜잭션이 끝났다는 것을 알리기 위해 사용한다.

 

Rollback 연산:

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

역할: 트랜잭션을 처음부터 다시 시작하거나, 트랜잭션의 부분적으로만 연산된 결과를 다시 취소(Undo)시키는데 사용한다.  Rollback시 해당 트랜잭션을 재시작하거나 폐기한다.

 

 


트랜잭션의 상태

 

 

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

출처: 

https://mommoo.tistory.com/62

https://junghn.tistory.com/entry/DataBase%EA%B8%B0%EC%B4%88-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-Transaction

https://github.com/WeareSoft/tech-interview/blob/master/contents/db.md#%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98%EC%9D%B4%EB%9E%80

'DataBase' 카테고리의 다른 글

Replication(리플리케이션)  (0) 2021.08.25
효과적인 쿼리 저장  (0) 2021.08.25
Optimizer(최적화의 원리)  (0) 2021.08.24
정규화(Normalization) - 1차 2차 3차 BCNF  (2) 2021.08.16
Database Pool(데이터베이스 풀)  (0) 2021.08.16