티스토리 뷰

트랜잭션이란?

데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위이다.

 

데이터베이스 상태를 변화시키는 것은 질의어(SELECT, INSERT, DELETE, UPDATE)로 데이터베이스에 접근하는 것을 말한다.

이때, 작업의 단위는 질의어 한 문장이 아니다. 

 

예를 들어, 상품을 구매하면 포인트를 적립하는 비즈니스 로직이 구현되기 위해서는

 

1. 상품을 구매한 구매내역을 데이터베이스에 등록하고

2. 그 상품을 구매한 사용자의 포인트 점수를 갱신해주어야 한다.

 

여기서 작업단위는 구매내역을 등록하는 INSERT문과 사용자의 포인트 점수를 갱신하는 UPDATE문을 합친 것이다.

 

이러한 작업단위를 하나의 트랜잭션이라고 한다.

쉽게 말해 데이터베이스에 하는 여러 개의 작업들이 마치 하나의 그룹처럼 묶여서 처리되는 단위이다. 

트랜잭션은 여러개의 작업들이 전부 성공하든가 전부 실패하든가(All or Nothing)하게 만든다.

트랜잭션은 ACID 원칙을 갖는다.

트랜잭션은 4가지 특징을 갖는다.

 

1. Atomicity(원자성)

여러개의 작업을 논리적으로 하나로 인식하여 작업을 더 이상 쪼갤 수 없음을 의미한다.

 

즉, 작업을 하나로 인식하기 때문에 그룹처럼 묶인 여러개의 작업들이 전부 성공하든가 전부 실패(All or Nothing)해야 한다는 것이다.

 

2. Consistency(일관성)

트랜잭션의 결과가 항상 일관성 있어야 함을 의미한다.

 

이는 트랜잭션이 진행되는 동안에 상태를 변화시키고 있는 데이터베이스로 트랜잭션이 진행되는 것이 아니라, 처음에 트랜잭션을 진행하기 위해 참조한 데이터베이스로 진행된다. 이를 통해 사용자는 일관성 있는 데이터를 볼 수 있다.

 

3. Isolation(격리성)

여러개의 트랜잭션이 실행되는 경우, 각각 독립적으로 실행된다.

 

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

성능 향상 목적으로 트랜잭션을 번갈아 실행하기도 한다.

 

4. Durability(지속성)

트랜잭션이 완료되면, 그 결과는 지속되어야 한다.

트랜잭션은 두가지 연산을 한다.

Commit 

하나의 트랜잭션이 성공적으로 끝난 경우 작업을 마무리 한다.

 

Rollback

트랜잭션 내 하나의 작업이 비정상적으로 종료된 경우 작업을 취소하고 이전의 상태로 돌린다.

 

 

 

'Database' 카테고리의 다른 글

[QueryDsl] fetchCount() 가 deprecated 되었다.  (2) 2024.08.28
[Database] MySQL : PART1  (0) 2022.12.05
[Database] 인스타그램 Relational Schema 실습  (0) 2022.12.02
[Database] schema란?  (0) 2022.12.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함