티스토리 뷰
Hiberante를 공부하다가 transaction? commit? rollback과 같은 말들을 이해할 수가 없어서 찾아본 결과이다.
1. Transaction 이란?
: 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위이다. 그리고 다른 transaction과 독립적으로 일관적이고 믿을만한 방식으로 여겨진다. 트렌잭션은 일반적으로 데이터베이스의 어떠한 변화를 나타낸다.
데이터베이스 환경에서의 트렌잭션은 두가지 주 목적이 있다.
(1). 믿을만한 작업의 단위를 제공하여 실패로 부터 올바른 회복을 가능하게 하고, 실행이 완전히 또는 부분적으로 멈출때와 많은 데이터베이스에서의 작업들이 완성되지 않은, 불분명한 상태로 남아 있을 경우 데이터베이스를 시스템 실패의 경우에도 일관적으로 유지할 수 있다.
(2). 데이터베이스에 동시에 접근하는 프로그램 사이에 isolation을 제공하기 위해서. 만약에 isolation이 제공되지 않으면, 프로그램의 결과가 잘못될 수 있다.
데이터베이스 관리시스템에서 트렌잭션은 하나의 작업이나 로직의 단위이며, 가끔은 많은 작업들로 만들어 진다. 데이터베이스에서 일관적으로 logical한 calculation이 일어나는 경우는 transaction이다.
예) 하나의 은행 계좌에서 다른 계좌로 송금할 때 : 완전한 transaction은 이동전의 한 게좌에서 금액을 빼서 같은 금액을 다른 계좌로 추가해야 하는 것을 필요로 한다.
2. 데이터베이스 트렌젝션의 특성
(1). atomic
- 트랜잭션이 데이터베이스에 모두 반영되던가 아무 반영이 안되거나 해야한다.
(2). consistent
- 데이터베이스에 존재하는 제약조건들을 따라야 한다. (일관성이 있어야 한다)
트랜잭션이 진행되는 동안에 데이터베이스가 변경되더라도 업데이트된 데이터베이스로 트랜잭션이 진행되는 것이 아닌 처음에 트랜잭션을 진행하기 위해 참조한 데이터베이스로 진행된다.
(3). isolated
- 다른 트랜잭션에 아무 영향을 주지 말아야 한다. 동시에 다른 트랜잭션이 실행되고 있다고 하더라도 어떠한 한 트랜잭션이 다른 트랜잭션의 연산에 끼어 들 수 없다는 것이다.
(4). durable
- 트랜잭션이 반영되었을 경우 영구적으로 반영 되어야 한다.
3. 트랜잭션의 Commit과 Rollback에 대해서
(1) Commit : 하나의 트랜잭션이 성공적으로 끝났고, 데이터베이스가 일관성있는 상태에 있을 때, 하나의 트랜잭션이 성공적으로 끝났다는 것을 알려 주기 위해서 사용하는 연산.
-> 트랜잭션을 log에 저장하여 후에 수행했던 트랜잭션 단위로 rollback 연산 가능하게 해준다.
(2) Rollback : 하나의 트랜잭션 처리가 비정상적으로 종료되어 원자성이 깨진경우, 처음부터 트랜잭션을 다시 시작하거나 트랜잭션에서 부분적으로만 연산된 결과를 다시 취소시킨다. 또한 나중에 트랜잭션 처리된 단위대로 rollback을 진행 할 수도 있다.
SQL과 같은 언어에서의 데이터베이스 시스템에서 대개 간단한 트랜잭션이 발행되는 방식은 트랜잭션을 감싸는 방식이다. 다음과 같은 형식으로.
1) transaction 시작.
2) 데이터 조작 및 쿼리 조작 실행.
3) 에러가 발생하지 않는다 -> transaction commit.
4) 에러가 발생한다 -> transaction roll back (transaction 시작하기 전으로 되돌림)
Reference :
https://en.wikipedia.org/wiki/Database_transaction
https://en.wikipedia.org/wiki/ACID
'Programming > Database' 카테고리의 다른 글
원티드 프리온보딩 백엔드 챌린지 - 데이터베이스 1일차 (0) | 2023.02.09 |
---|---|
Database 인덱스 (0) | 2022.05.26 |
Data Normalization & Relationships: Splitting & Joining data (0) | 2022.05.14 |
(용어정리) 쿼리, DBMS, Connection Pool, Connection Leak, 스키마 (0) | 2021.11.25 |
Entity(개체), 속성, 도메인 이란? (2) | 2021.11.24 |
- Total
- Today
- Yesterday