Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Spring Data JPA
- 분할상환분석
- Flush
- 지연로딩
- 값타입
- 순수jpa
- 플러시
- DB
- 고아객체
- DiscriminatorValue
- Amortized Analysis
- relational DB
- 관계형 데이터베이스
- commit
- Embeddable
- MappedSuperclass
- 영속성전이
- 영속성 컨텍스트
- n+1문제
- 페치조인
- DiscriminatorColumn
- Spring
- 정렬
- fetch join
- Algorithm
- 엔티티 매핑
- JPA
- ROLLBACK
- 즉시로딩
- relational database
Archives
- Today
- Total
Jun's note
[DB] 트랜잭션(Transaction)이란? 본문
728x90
1. 트랜잭션의 개념
"쪼개질 수 없는 업무처리의 단위"를 의미하며, db에서는 "데이터베이스가 수행하는 작업의 단위"를 의미한다.
2. 트랜잭션 예시
ex1)
ATM으로 계좌이체를 할 경우,
1. A 은행에서 돈을 출금하여 B 은행에 송금하려고 한다.
2. 송금 중 오류가 생겨, B 은행에 돈이 송금되지 않았는데 A은행에서는 돈이 빠져나갔다.
이와 같은 상황을 막기 위해서는 1,2번 과정이 하나의 작업으로 이뤄져있어야한다.
1번 과정에서 에러가 발생하는 경우 지금까지 했던 과정을 다 취소하고 처음 상태로 복구해야한다. (이 과정은 Rollback이다)
ex2)
게시판에 글을 업로드하고 내가 쓴 글을 게시판에서 확인한다. (db측면에서)
이는 질의어(select, insert, delete 등)를 통해 이뤄진다.
1. 글을 업로드 할때는 insert가 사용되고
2. 내가 쓴 글을 게시판에서 확인하는 할때는 select가 사용된다.
여기서 작업의 단위는 insert문과 select문을 합친것이다.
트랜잭션을 통해 안정성을 확보할 수 있다.
3. 커밋(Commit)과 롤백(Rollback)
트랜잭션을 처리하기 위해서는 데이터베이스에서 '커밋' , '롤백' 두가지 명령어가 사용된다.
- 커밋
- 하나의 트랜잭션이 성공적으로 끝났을때, 트랜잭션이 끝났다는 것을 알려준다.
- 커밋 명령어를 사용하면 이 때 수행된 트랜잭션이 로그에 남아, 나중에 Rollback하는 것을 도와준다.
- 롤백
- 트랜잭션이 에러나 장애에 의해 비정상적으로 종료되는 경우, 수행하는 작업이다.
- 롤백을 하게 되면, 트랜잭션을 처음부터 다시 시작하거나, 부분적으로 수행된 작업을 취소한다.
두 명령어는 트랜잭션 단위로 수행된다.
4. 정리
db를 설계할 때 항상 트랜잭션 단위로 설계하는 것을 잊지 말자!!
관계형 데이터베이스(RDBMS)의 장점 중 하나가 바로 트랜잭션이다!
'Programming > DB' 카테고리의 다른 글
[DB] 관계형 데이터베이스란? (0) | 2022.01.13 |
---|
Comments