-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
SeYun
committed
Dec 19, 2020
1 parent
9b04146
commit ee55c8b
Showing
2 changed files
with
40 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
# Transaction의 성질 - ACID | ||
|
||
## 트랜잭션이란? | ||
|
||
- 하나의 논리적 작업 단위를 구성하는 일련의 연산들의 집합 | ||
- 예를 들어 계좌이체를 했을 경우 A 계좌에서 10만원을 인출하고 B 계좌에서 10만원을 입금되었을 경우 A 계좌 인출 시 문제가 생겼을 경우 원래 상태(B 계좌에 입금이 되면 안된다.)로 돌아가야 하고 B 계좌 입금시 문제가 생겼을 경우 원래 상태(A 계좌로 인출이 되면 안된다.)로 돌아가야 한다. | ||
- 이러한 트랜잭션은 다양한 데이터 항목들을 접근하고 갱신하는 프로그램의 수행 단위가 된다. | ||
- 트랜잭션은 아래의 ACID 성질이라고 하는 것으로 설명된다. | ||
|
||
## 트랜잭션의 성질 | ||
|
||
- 트랜잭션이 안전하게 수행되는 것을 보장하기 위한 성질 | ||
|
||
### A - Atomicity(원자성) | ||
|
||
- All or Notihng | ||
- 모든 트랜잭션 연산들이 정상적으로 수행 완료가 되거나 아니면 전혀 어떠한 연산도 수행해서는 안된다. | ||
- 즉, 완료되지 않은 트랜잭션의 중간 상태를 DB에 반영되면 안되고 완료된 트랜잭션은 모두 반영되어야 한다는 것이다. | ||
|
||
### C - Consistency (일관성) | ||
|
||
- 트랜잭션 작업 처리 결과는 항상 일관성이 있어야 한다. | ||
- 즉, 성공적으로 수행된 트랜잭션은 정당한 데이터들만 데이터베이스에 반영해야 한다. | ||
- 기본키, 외래 키 제약 같은 명시적인 무결성 제약 조건뿐만 아니라 아까의 계좌이체 예제에서 A와 B 계좌의 잔고 합이 트랜잭션 전과 후가 같아야 한다는 비명시적 일관성 조건도 있다. | ||
|
||
### I - Isolation (독립성) | ||
|
||
- 둘 이상의 트랜잭션이 동시에 실행되고 있다 해도 각각의 트랜잭션은 다른 트랜잭션의 수행에 영향을 받지 않고 독립적으로 실행해야 한다. | ||
- 즉, 서로의 간섭없이 독립적으로 이루어져야 한다는 의미이다. | ||
- 이 독립성을 보장할 수 있는 가장 좋은 방법은 순차적으로 수행하는 것(비동시성)인데, 병렬 처리(동시성)의 장점을 얻기 위해 격리레벨, 전파 옵션을 이용해 독립적은 최소한으로 보장하고 성능은 최대한 가져오는 방법을 제공한다. | ||
|
||
### D - Durablity (지속성) | ||
|
||
- 트랜잭션이 정상적으로 성공되어 커밋이 되면 해당 트랜잭션에 대한 모든 변경은 영구적으로 반영되어야 한다. | ||
|
||
## 참고자료 | ||
|
||
[NAVER D2](https://d2.naver.com/helloworld/407507) |