의견.png

"트랜잭션"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
14번째 줄: 14번째 줄:
 
* 고립성(isolation) : 트랜잭션을 수행하는 도중에 다른 연산 작업이 끼어들어서는 안 된다.
 
* 고립성(isolation) : 트랜잭션을 수행하는 도중에 다른 연산 작업이 끼어들어서는 안 된다.
 
* 지속성(durability) : 성공적으로 수행된 트랜잭션은 영구적으로 반영되어야 한다.
 
* 지속성(durability) : 성공적으로 수행된 트랜잭션은 영구적으로 반영되어야 한다.
 +
 +
=== 필요성 ===
 +
트랜잭션은 거래의 안전성을 확보하는 방법인데 데이터베이스에선 테이블에서 데이터를 읽어 온 후 다른 테이블에 데이터를 입력하거나 갱신, 삭제하는데 처리 도중 오류가 발생하면 모든 작업을 원상태로 되돌린다. 데이터베이스에서는 처리 과정이 모두 성공했을 때만 최종적으로 데이터베이스에 반영한다.
 +
[[파일:트랜잭션의 필요성.png|700픽셀|섬네일|가운데|트랜잭션의 필요성]]
 +
위 그림을 보자 1,2번까지 잘 실행되다가 3번 작업 시 소프트웨어가 중단되거나 하드웨어 고장이 발생해 작업에 오류가 생기게 된다면 2번까지의 모든 작업을 취소하고 트랜잭션 작업 전인 데이터베이스 초기 상태로 돌아가게 된다.
 +
<ref> 〈[https://jerryjerryjerry.tistory.com/48 트랜잭션 필요성]〉, 2018-04-24《Tistory - 쩨리쩨리》</ref>
  
 
=== 연산<ref name="트랜잭션"/> ===
 
=== 연산<ref name="트랜잭션"/> ===
30번째 줄: 36번째 줄:
 
== 참고자료 ==
 
== 참고자료 ==
 
* 트랜잭션 <[https://coding-factory.tistory.com/226 트랜잭션 특징]〉,  2018-08-20《Tistory - 코딩팩토리》
 
* 트랜잭션 <[https://coding-factory.tistory.com/226 트랜잭션 특징]〉,  2018-08-20《Tistory - 코딩팩토리》
 +
* [SQL] Transaction(트랜잭션) <[https://jerryjerryjerry.tistory.com/48 트랜잭션 필요성]〉, 2018-04-24《Tistory - 쩨리쩨리》</ref>
  
 
== 같이보기 ==
 
== 같이보기 ==

2020년 9월 3일 (목) 15:47 판

트랜잭션(transaction)이란 "쪼갤 수 없는 업무 처리의 최소 단위"를 말한다. 거래내역이라고도 한다. '트렌젝션'이 아니라 '트랜잭션'이 올바른 표기법이다. 영어로 간략히 Tx라고 표기하기도 한다. 1초당 처리할 수 있는 트랜잭션의 개수를 TPS라고 한다.

개요

트랜잭션은 은행 ATM이나 데이터베이스 등의 시스템에서 사용되는 더 이상 쪼갤 수 없는 업무 처리의 최소 단위이다. 예를 들어, A라는 사람이 B라는 사람에게 1,000원을 지급하고 B가 그 돈을 받은 경우, 이 거래 기록은 더 이상 작게 쪼갤 수가 없는 하나의 트랜잭션을 구성한다. 만약 A는 돈을 지불했으나 B는 돈을 받지 못했다면 그 거래는 성립되지 않는다. 이처럼 A가 돈을 지불하는 행위와 B가 돈을 받는 행위는 별개로 분리될 수 없으며 하나의 거래내역으로 처리되어야 하는 단일 거래이다. 이런 거래의 최소 단위를 트랜잭션이라고 한다. 트랜잭션 처리가 정상적으로 완료된 경우 커밋(commit)을 하고, 오류가 발생할 경우 원래 상태대로 롤백(rollback)을 한다.

특징

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

성질

데이터베이스의 트랜잭션이 안전하게 수행되기 위해서는 ACID 조건을 충족해야 한다. ACID란 Atomicity, Consistency, Isolation, Durability의 약자로서, 데이터베이스의 트랜잭션이 안전하게 수행되기 위한 4가지 필수적인 성질인 원자성, 일관성, 고립성, 지속성을 말한다.

  • 원자성(atomicity) : 하나의 트랜잭션은 더 이상 작게 쪼갤 수 없는 최소한의 업무 단위이다.
  • 일관성(consistency) : 트랜잭션이 완료된 결과값은 일관성 있는 데이터베이스 상태로 유지되어야 한다.
  • 고립성(isolation) : 트랜잭션을 수행하는 도중에 다른 연산 작업이 끼어들어서는 안 된다.
  • 지속성(durability) : 성공적으로 수행된 트랜잭션은 영구적으로 반영되어야 한다.

필요성

트랜잭션은 거래의 안전성을 확보하는 방법인데 데이터베이스에선 테이블에서 데이터를 읽어 온 후 다른 테이블에 데이터를 입력하거나 갱신, 삭제하는데 처리 도중 오류가 발생하면 모든 작업을 원상태로 되돌린다. 데이터베이스에서는 처리 과정이 모두 성공했을 때만 최종적으로 데이터베이스에 반영한다.

트랜잭션의 필요성

위 그림을 보자 1,2번까지 잘 실행되다가 3번 작업 시 소프트웨어가 중단되거나 하드웨어 고장이 발생해 작업에 오류가 생기게 된다면 2번까지의 모든 작업을 취소하고 트랜잭션 작업 전인 데이터베이스 초기 상태로 돌아가게 된다. [2]

연산[1]

  • Commit: Commit 연산은 한개의 논리적 단위(트랜잭션)에 대한 작업이 성공적으로 끝났고 데이터베이스가 다시 일관된 상태에 있을 때, 트랜잭션이 행한 갱신 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산이다.
  • Rollback: Rollback 연산은 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성을 깨트렸을 때, 이 트랜잭션의 일부가 정상적으로 처리되더라도 트랜잭션의 원자성을 구현하기 위해 이 트랜잭션이 행한 모든 연산을 취소하는 연산이다. Rollback시에는 해당 트랜잭션을 재시작하거나 폐기한다.

상태[1]

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

각주

  1. 1.0 1.1 1.2 트랜잭션 특징〉, 2018-08-20《Tistory - 코딩팩토리》
  2. 트랜잭션 필요성〉, 2018-04-24《Tistory - 쩨리쩨리》

참고자료

같이보기


  의견.png 이 트랜잭션 문서는 프로그래밍에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.