CS/DataBase

트랜젝션

whyWhale 2021. 4. 29.

Transaction

 

 

 

트랙잭션이란 ?


  • 트랜잭션의 작업의 안정성을 보장해주는 것.
  • 논리적인 작업 셋을 모두 완벽하게 처리하거나 또는 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능.
  • 사용자의 입장에서는 작업의 논리적 단위로 이해를 할 수 있고 시스템의 입장에서는 데이터들을 접근 또는 변경하는 프로그램의 단위가 된다.

 

 

 

트랜잭션과 Lock


  • 잠금과 트랜젝션은 서로 비슷한 개념 같지만, 잠금은 동시성을 제어하기 위한 기능이고 트랜잭션은 데이터의 정합성을 보장하기 위한 기능이다.
  • 잠금은 여러 커넥션하는 과정에서 동시에 자원을 요청할 경우 순서대로 한 시점에는 하나의 커넥션만 변경이 가능하도록 해준다.
    • 자원 : 레코드나 테이블 개념
  • 트랜잭션은 꼭 여러 개의 변경 작업을 수행하는 쿼리가 조합되었을 때만 의미있는 개념이 아니다.
  • 트랜잭션은 하나의 논리적인 작업 셋 중 하나의 쿼리가 있든 두 개 이상의 쿼리가 있든 관계없이 논리적인 작업 셋 자체가 100% 적용되거나 아무것도 적용되지 않아야 함을 보장하는 것이다.(YES or NO)
    • ex) HW 에러 또는 SW에러와 같은 문제로 인해 작업에 실패가 있을 경우, 특별한 대책이 필요하게 되는데 이러한 문제를 해결하는 것이다.

 

 

트랜잭션의 특성


  • ACID
    • 원자성
      • 트랙잭션의 중간에 문제가 발생한다면 트랜잭션에 해당하는 어떠한 작업 내용도 수행되어서는 안되며 아무런 문제가 발생되지 않았을 경우에만 모든 작업이 수행되어야 한다.
    • 일관성
      • 트랜잭션이 완료 된 후 다음 상태는 트랜잭션이 일어나기 전의 상황과 동일하게 데이터의 일관성을 보장해야 한다.
    • 고립성
      • 각각의 트랜잭션은 서로 간섭없이 독립적으로 수행되어야 한다.
    • 지속성
      • 트랜잭션이 정상적으로 종료된 다음에는 영구적으로 데이터베이스에 작업의 결과가 저장되어야 한다.

 

트랜잭션의 상태


 

Tranaction Statement

  • Active 
    • 트랜잭션의 활동상태.
    • 트랜잭션이 실행중이며 동작중인 상태이다.
  • Failed
    • 트랜잭션의 실패 상태
    • 트랜잭션의 더 이상 정상적으로 진행 할 수 없는 상태를 말한다.
  • Partially Committed
    • 트랜잭션의 Commit 명령이 도착한 상태.
    • 트랜잭션의 Commit 
  • Committed
    • 트랜잭션 완료 상태.
    • 트랜잭션이 정상적으로 완료된 상태를 말한다.
  • Aborted
    • 트랜잭션이 취소 상태.
    • 트랜잭션이 취소되고 트랜잭션 실행 이전 데이터로 돌아간 상태를 말한다.

※ Patially Committed 와 Committed 의 차이

Commit 요청이 들어오면 상태는 Patial Commited 상태가 된다. 이후 Commit을 문제없이 수행할 수 있으면 Committed 상태로 전이되고, 만약 오류가 발생하면 Failed 상태가 된다. 만약 오류가 발생하면 Failed 상태가 된다.

즉, Patial Committed 는 Commit 요청이 들어왔을 때를 말하며, Committed는 Commit을 정상적으로 완료한 상태를 말한다.

 

 

트랜잭션을 사용할 때 주의할 점


트랜잭션은 꼭 필요한 최소의 코드에만 적용하는 것이 좋다. 즉 트랜잭션의 범위를 최소화 해야 됨을 의미한다.

일반적으로 데이터베이스 커넥션은 개수가 제한적이다. 그런데 각 단위 프로그램이 커넥션을 소유하는 시간이 길어진다면 사용 가능한 여우 커넥션의 개수는 줄어들게 된다.

그러다 어느 순간에는 각 단위 프로그램에서 커넥션을 가기 위해 기다려야 하는 상황이 발생할 수도 있는 것이다.

 

'CS > DataBase' 카테고리의 다른 글

모델링 IE 표기법 _ 객체 다중성 표기법  (0) 2021.07.13
인덱스  (0) 2021.05.02
교착상태  (0) 2021.05.01
정규화와 반정규화  (0) 2021.04.28
데이터 베이스의 사용 이유와 성능  (0) 2021.04.28

댓글