데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위
[예시1]
게시판을 예로 들어보자.
게시판 사용자는 게시글을 작성하고, 올리기 버튼을 누른다.
그 후에 다시 게시판에 돌아왔을때, 게시판은 자신의 글이 포함된 업데이트된 게시판을 보게 된다.
이러한 상황을 데이터베이스 작업으로 옮기면, 사용자가 올리기 버튼을 눌렀을 시,
Insert 문을 사용하여 사용자가 입력한 게시글의 데이터를 옮긴다.
그 후에, 게시판을 구성할 데이터를 다시 Select 하여 최신 정보로 유지한다.
여기서 작업의 단위는 insert문과 select문 둘 다를 합친것이다. 이러한 작업단위를 하나의 트랜잭션이라 한다.
[예시2]
A가 B에게 10만원을 입금해야한다.
1. A는 은행계좌, 이름, 입금금액을 입력한다.
2. A의 통장에서 10만원이 출금된다.
3. B의 통장에 10만원이 입금된다.
2,3번의 출금과 입금의 단위를 하나의 트랜잭션이라 한다.
commit & rollback
Commit : 하나의 트랜잭션이 성공적으로 끝났고, 데이터베이스가 일관성있는 상태에 있을 때, 하나의 트랜잭션이 끝났다 라는 것을 알려주기위해 사용하는 연산
: 이 연산을 사용하면 수행했던 트랜잭션이 로그에 저장되며, 후에 Rollback 연산을 수행했었던 트랜잭션 단위로 하는것을 도와줌
Rollback : 하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션의 원자성이 깨진경우, 트랜잭션을 처음부터 다시
시작하거나, 트랜잭션의 부분적으로만 연산된 결과를 다시 취소시킴
: 후에 사용자가 트랜잭션 처리된 단위대로 Rollback을 진행할 수도 있다.
트랜잭션의 특징은 크게 4가지로 구분
- 원자성 (Atomicity)
트랜젝션이 db에 모두 반영되거나 전혀 반영되지 않아야 하는것
만약 트랜잭션 단위로 데이터가 처리되지 않는다면,
설계한 사람은 데이터 처리 시스템을 이해하기 힘들 뿐만 아니라,
오작동 했을시 원인을 찾기가 매우 어려움
- 일관성 (Consistency)
트랜잭션이 진행되는동안 db가 변경되더라도 업데이트된 db로 트랜잭션이 진행되는 것이 아니라, 처음에 트랜잭션을 진행하기위해 참조한 db로 진행됨
그러므로 각 사용자는 일관성 있는 데이터를 볼 수 있음
- 독립성 (Isolation)
둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 완료되기 전까지는 어떤 하나의 트랜잭션이라도 다른 트랜잭션의 연산에 끼어들 수 없다는 것
- 지속성 (Durability)
트랜잭션이 성공적으로 완료됐을 경우, 결과는 영구적으로 반영
'DataBase' 카테고리의 다른 글
[DB] SQL Constraint 란? (0) | 2022.08.20 |
---|---|
[MyBatis] resultType & resultMap 차이 (+parameterType) (0) | 2022.08.19 |
[DB] 정규화 (Normalization) & 함수적 종속성 (0) | 2022.07.27 |
[DB] 데이터베이스 설계와 ER모델 (새발 표기법) (0) | 2022.07.27 |
[DB] 관계형 데이터 모델 (Relation Data Model) (0) | 2022.07.27 |
댓글