We.TIL 34 : Transaction 4요소

김기욱·2020년 9월 16일
0

We.TIL

목록 보기
55/69

트랜잭션이란?

데이터베이스의 상태를 변화시키기 위해서 수행하는 작업단위를 뜻 한다.
데이터베이스 상태를 변화시킨다는건 예를 들자면 이런 것들이 있다.

  • CREATE(생성)
  • SELECT(참조)
  • INSERT(추가)
  • DELETE(삭제)
  • UPDATE(수정)

다음과 같은 SQLquery들은 데이터베이스의 상태를 변화시킨다.
주의해야할 점은 작업의 단위가 꼭 쿼리 한 문장은 아니라는 점이다.

주의 : 1작업 != 1쿼리

작업 단위는 여러가지의 쿼리묶음을 사람이 정하는 기준에 따라 정해진다.
즉, 작업 단위는 정해진 쿼리의 갯수가 없다. 100개가 넘는 쿼리가 있더라도 한 트랜잭션이라고 정의할 수 있는 것이다.

그리고 트랜잭션은 다음과 같이 네 가지 요소를 반드시 포함하게 된다.

트랜잭션 4요소

첫째. 원자성(Atomicity)

트랜잭션이 DB에 모두 반영되던가, 전혀 반영되지 않아야 한다.
예를 들어 비행기 티켓팅이란 트랜잭션은 요금의 지불과 항공티켓의 발송이 모두 이뤄져야 한다. 요금의 지불에서 트랜잭션 실행이 멈춘다면, 클라이언트는 돈만 날리고 항공티켓은 받지 못하게 된다. 이러한 불상사를 방지하기 위해 트랜잭션은 All or Nothing이라는 더 이상 쪼갤수 없는 원자성을 갖게된다.

  • 롤백&커밋? : 롤백과 커밋은 원자성과 밀접한 관련이 있는 기술이다.
    롤백은 부분작업이 실패하면 트랜잭션 실행 이전으로 되돌리는 작업을 수행하며,
    커밋이란 모든 부분작업이 정상적으로 완료하면 이 변경사항을 한꺼번에 DB에 반영한다.

둘째. 일관성(Consistency)

트랜잭션이 진행되는 동안에 데이터가 변경되더라도 업데이트된 데이터로 트랜잭션이 진행되는것이 아니라, 처음에 트랜잭션을 진행하기 위해 참조한 데이터로 진행된다.

셋째. 독립성(Isolation)

둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 경우에 어느 하나의 트랜잭션이라도 다른 트랜잭션의 연산에 끼어들 수 없다.

하나의 특정 트랜잭션이 완료될 때 까지는, 다른 트랜잭션이 특정 트랜잭션의 결과를 참조 할 수 없다.

넷째. 지속성(Durability)

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

profile
어려운 것은 없다, 다만 아직 익숙치않을뿐이다.

0개의 댓글