트랜잭션이란,
데이터 베이스에서 일어나는 연산의 최소 단위이다.
Select 하거나 update , delete 등등 데이터 베이스에서 일어나는 변경사항에 관한 최소 연산 단위를 뜻한다.
트랜잭션은 데이터베이스의 무결성을 유지하고 신뢰할 수 있는 데이터를 저장할 수 있도록 유지하는 과정이다.
예를 들면, 게시판에 글을 작성하고 화면에서는 게시글이 등록이 성공됐다고 나오지만,
데이터베이스에 데이터 저장 중, 오류가 발생하여 내가 쓴 글이 보이지 않거나
커머스 서비스에서 상품을 구매했다거나 구매하지 않았다고 표기가 되지만, 나의 잔고가 줄어든다던가 재고 수량이 줄어들지 않는다면?
우리는 그 사이트 혹은 서비스를 신뢰를 할 수 없다.
앞서 언급한 일들이 일어나면 안 되기 때문에,
DB에 데이터를 insert하거나 select, update 등의 질의가 일어날 때 오류가 발생하면
Rollback을 시키고,
정상적으로 데이터를 적재하거나, 업데이트를 했다면 이를 Commit 하여 데이터 베이스에 변경사항을 반영시켜야 한다.
여기서 알 수 있는 것은 트랜잭션은 Rollback 되거나 Commit 되거나 둘 중 하나의 상태를 가지게 된다.
트랜잭션은 데이터 베이스의 무결성을 유지하고 신뢰성을 확보하기 위해
다음과 같은 특징들을 가진다.
Atomicity(원자성)
1. 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다.
2. 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 한다.
Consistency(일관성)
1. 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다.
2. 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 한다.
Isolation(독립성, 격리성)
1. 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다.
2. 수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다.
Durablility(영속성, 지속성)
1. 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장 나더라도 영구적으로 반영되어야 한다.
출처:
댓글